{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import joblib\n",
    "from joblib import Parallel, delayed\n",
    "from sklearn.preprocessing import LabelEncoder \n",
    "import matplotlib as  mpl\n",
    "from matplotlib  import pyplot as plt\n",
    "mpl.rcParams[u'font.sans-serif'] = ['simhei']\n",
    "mpl.rcParams['axes.unicode_minus'] = False"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.加载有标签的训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_dir = '../../preprocess_data_new/'\n",
    "train_x = joblib.load(input_dir + 'train_x_33465.lz4')\n",
    "train_ax = joblib.load(input_dir + 'train_ax.lz4')\n",
    "train_y = joblib.load(input_dir + 'train_y_33465.lz4')\n",
    "# x = train_x.drop(columns=['id','loan_dt','tag'])\n",
    "# y = train_y['label']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "def show_uniq(data):\n",
    "    '''\n",
    "    描述：\n",
    "        展示unique num 的走势\n",
    "    '''\n",
    "    uniq = [[col,data[col].unique().shape[0]] for col in data.columns]\n",
    "    uniq_sort = sorted(uniq,key=lambda x: x[1],reverse=False)\n",
    "    uniq_num = [i[1] for i in uniq_sort]\n",
    "    \n",
    "    plt.figure(figsize=(20,10))\n",
    "    plt.subplot(121)\n",
    "    plt.plot(uniq_num)\n",
    "    plt.title(s = 'UniqueNum 按升序排列', fontdict={'fontsize':20})\n",
    "    plt.ylabel(s = 'UniqueNum', fontdict={'fontsize':15})\n",
    "    plt.xlabel(s = '特征', fontdict={'fontsize':15})\n",
    "\n",
    "    plt.subplot(122)\n",
    "    plt.title(s = 'lg(UniqueNum) 按升序排列', fontdict={'fontsize':20})\n",
    "    plt.plot(np.log10(uniq_num))\n",
    "    plt.ylabel(s = 'lg(UniqueNum)', fontdict={'fontsize':15})\n",
    "    plt.xlabel(s = '特征', fontdict={'fontsize':15})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.通过观察UniqueNum的走势，寻找合适的cut_point"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKMAAAJkCAYAAADNx+InAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd8XXX9x/H3J2matOluOummjJZCaSl7WGUJVREUGbKX/ETBBSqCIioiqICAIHsjyJa9EShQCnRRKC1075WmzR6f3x/fE3p7e5Nm3ORkvJ6Px30kOefccz73JnA//ZzP9/s1dxcAAAAAAADQHDLiDgAAAAAAAADtB8UoAAAAAAAANBuKUQAAAAAAAGg2FKMAAAAAAADQbChGAQAAAAAAoNlQjAIAAAAAAECzoRgFAEnMbN80nKNrwvedzGyQmXVpxPmyzGxvM9unns8bYGZjzCwrxb5cM+tvZpnRz5lmlvbPBTPLMbNhZtYj3ecGAABIJco/xqXhPIk5XY8op9sqr6rH+bqZ2aFmNqKezxtpZjvWsK+nmfVJ+LmDmVlDY6wlhh5RTpeT7nOj/aEYBaBdMbMzzWyNmfWqYf9Zkt4yswkNPP+OZnazpJVmdnS0+XBJiyWd2qCgg/6S3pF0dT2fd6GkmZI6pdh3nqTlkgZEP6+S9ECqk5jZGWZ2gpkdX8PjBDM72cy+neLpe0uaL+n8esYOAEBaVd+AQfOwoEn+zWlmd5jZm7UccpukpxOLSfU4t5nZV8zseUnzzGxktOsyhZwuZVGojr4l6UVJp9fzeQ9L+ncN++5XyBNlZrtKKpf0g+SDzGygmZ1SSz5XndOdamZ7p7jOBQo53V71jB3YSoe4AwCAGPSWVFzDvvslXSrpRjPbx929thNFd512lXSYpOMkVRexVkg61MyeTrhWyTbO1UVSTd1T5ZJmSdrHzIYnnDNDUpakjpIK3X1Z0vOKJLm7F6Q4Z3U8xQnH1vS+XBIdXyWpu6RBCq9xbUIcmZI+kfREDdfJr+HcAAA0OTPbT9JtZraXu2+KO5524mqFPOWCJjh3df5TkyslnSDptwo352plZh0l7SvpCEnHSxoa7Zot6UhJ/1Ddc7petcT2vqRKSYeb2Y0J2zOj52RJWunuG5KeV6SQD6ZSoi3zOSl1TjdUIc8tk+SSBkrqKelzbX5N1bnlHZLeS3EdiZwOaUAxCkB7Uxl9dUmK7tbtlnTMPQoJwe5mlliMml+dGEQJy92SDpGUF+2v/tA/R9Id7l4ZHVt9zUrV7qeSLq/DcXMTvs+QVN2Gfbek05KOrVAoIKVSvT0xvpTXdvcvW8nN7EJJV0n6ibs/lHysmR2m8Dpud/dbJZVGuzbWEAcAAE0q6mx5StLfKUQ1q7slvWFmC93972k+d6WifE4Kw98kJQ99+7ekuWa2e9L2mQl52lCFm5HjJHWOzlmmUHjZz90/Srpm4tea/EfS17Zx3HhJSxJ+TuzaO13SXUnHV9RyvqoUsW11rLu/I2mH6p/N7BmFQtv+7r4y+Xgz+5Wkb0s6z90/EDkd0ohiFNAEzGyYQgvr3e5+WtK+1yV9xd0bPI47KpBsde64mNlESa9JWiBpZPWHe7TPJS1092GxBBdi6CApVyGpqG4V7xSN96+Q9JHCh3hyF9RFCd9nSpok6VlJcvcyM7tfYfjb85JeUmi7/rukqYnvQT1U3+3a392T70TVKHp9HbVlQtZZCXfEoqJbjkIH15GSCrV1EU6S9jazayVlS+rq7ielOKZ6/oWaYsxQGJp3f9L2WrvMAAAwswWSFrj7xDSe0yTdKekxd78i2jZRIXf5vbtfliIGNTR3ScgDtzp3XMzsNIX34C13PzBh+zCFWN9I53tezd1nRkP4XzSz5919dmPOZ2adFHKyMoWbcRZ1lldI2l8hT0vOwY5LPIVCnpKrqIPI3Rea2cuS5kh6QdIrCl1BE5MKUfVRLqnE3VNNk1Cj6GZnlsLrq87xMt29NOGY6g6qCyQNUcj3dtXWnVAnmtmeCgW2Be7+pxSXHKeQp29ViIr0UMjpypK2k9Oh0ShGAa3TyQrttC3NMEnfk/RgzHEkG6NQcEq0TtKj7v7dqGB2gbvfUMOH/s4Kw8+2+JB396clPZ1wXHWhqyGFKGlzMcqjxHnP6JoVqv1Dv8jdFyXEkaNQbEpUHdMJCu3YXSR1S3GuTgqdXtUt2luICniHKdwR2zl6b6rNc/d52nzXrDT5+QAAxOBUheFJRzbT9VYr5Gozmul69XFANA3Bu811QXf/n5ndKumfkiY28nQ/kHRN0raNkn6sMEemJO3u7rPMrLO7FyUeaGbnSrpJW+d0lyUdl6GG53NSyOmqu/B7SBqpcFN0i26uFNa4+5qEnw+R9FzSXOQVkt6W9LLC1BMVCjcck4tR3aP9HZQ6pxunMG/o22b29aTdU9x9ncjp0IQoRgGtkLvfF3cMtbhQLa8Y9ZnCnZ8SSUcpzCEwTlJBVFxJ/IQ/UtJdZnaOuz+SdJ7sbVyn+v+pNY3n35bqpKcqutbbCnftKpV6qF1PhaLRG9oyuSuVtI9CQerc6DFWUmd3f1/R5Jdm9iNtnuOq2uvuflYtMR6qkNiUa/PcUKZwh+5HkuZpc5JV0/BAAACa048k/cHdm2VokbsXSmrJudovJR29zaPS67eSlpvZLu7+cSPO86BC51KZpCskba9Q+FupkOsk+qOZHSXp6+4+N2lftmqf96mDGp7PSVvmbnsrDBEtVupiVIZCTidJv1eYJL3auwo3J4sUhu1VKEwHUZXYZWZmjygUvBLdtI1/M5wQfZ2gzTldpsJrH6Nw45acDk2G1fQApFORpHFmdmjcgSRy9yJ3n+bunyokK5L0qbt/oVBI+bWkydH2kxQ+eF9NOMVySWcrdEfJzDqaWa7ZVkvmVi9zm9zKvAUzy4jO0TVpVZ/qYlSFu5e4e5a7d3f3Xgqrlkx09zyFxOu/Cv8P/5/CqniJr9fd/T13nyVpTbTt46gQ1Vi/VkiEdnL3HHfPURi+KIX2dgAAWoxorqgxCnP4IORq3zKznZrzou6+XtIzChODN+Y8K919prvPUeiIKol+XqUw3PDXklZE+dXxkhYlFaJeV8jpqqQwrUHUUZ4sR9vI56LnZ5pZdjRfVaJKhXxJ7v6Cu2e7ew937y3pGIVpLfIk7aeQP7nC6n/XJ73efHefGhWeihS64WelYbhjnsL78Jmk3ISc7i9R7C1xBAbaGIpRQMzMbIGZvR4ttfqomW0ws5Vm9o+oayfVc9zM7qrlnOea2VwzKzWzGWZ2cPJzqq+b4rnTkreb2f5m9qKZFZjZGjN71sKyscnuU+jKuSjFvjpfN3o/FpjZj8xstZl9YWb7RO9PkZm9YGbb6lLaJjPrqfDhf52kj8xsO4VJGv8QtSZLkqJJy++QtCradKKkTZKqovfVo6F+l0X75yVtfynafmf0c6XC+1QgaVRiSNHXLZKfaOjgc5Imm9kvFdrQj5R0qrt/pT53GKOka6SZDVaYByBZrpkNMbPtzaxv0nO/K+kASfe5+/yEXaOjry1xOAIAoA2xsCz9LDMrjL6eaWaPmVlJNA9Ust0lzXL3Bq/+VZ1DmdmoKB/aaGZLzOy3NRw/LHrOZTXszzSzS81sURT3ZDM7Ovk5NeV7ZpafvN3Mvmlmb0d50nIze8jCxNzJblf4N+AvtvV6a7tuQv76xyh3nW5m483steh3c2+KU7+h8PtIuyinWyLpmmiY23ck9Zf088TjohuTd2pzzvVPScWJeVuUq02UNCjF9t9Ez5sf/Vyh0GH1RXJISlHMioqjL0t618wulTRNoUtrP3c/293XJj+nltecZ2bDzWyQwjQLyXpFOd2OZpabtO8yhTzwiqR5TkdL+szda10tEEgHhukBLUMPhQ/oaQqFnJMUxr7P19bj4mtlZj+X9FeFyaX/IWlHhdbgBjGzIyU9qdA59EuFD7tzJb1nZnu4+ycJhy9XWInubDMb14hJHyVpO4X5p26RdLHC+3Ovwl2170o6XI14XZJuVig8XSzpxqR915hZqvd9ocK8WB8oDEcs0pZty6crdDBdqFCsqrazwiST9yi0W2cqJILZ2typJW3urNoiAXD3CjM7VmGi9CslTZF0eH0SazOboDBnxqMKE7bW5Hhtvmv5Zau4mQ1ReJ/KJP3NzE509wei4yYqTIy5SgAANBEz+6bC6mxPS7pW0oEK3SR3STpLYah4soGSlqbh8kMVcpEnJD2u0JX8ezOb6e6P1/Nc1yoMHXxRoRNlX0kP1PqMWpjZOZL+pZCvXaAw9+P5kqaY2Rh3X51w+IcKN8lOjoohjbG/pHyF2M9VyBWvi/adZGZXu3vijaqlCr+PdOpvZi8o5FQLJJ1qWzauf2BbNbJL2rwC8X8kTdfW8y39Odp2edL2b0k6QtIlktYr5HMdtPUwthylGAbo7vMsTCZ/V3TumyT9uB4L33Qws29oc1HvDwn7picde502/z6+qtAVVp3b/5/C6szvmNlEd3/dQjfZAQq5NtDkKEYBLcNYSbe4+w+kL8d9r5B0sOpRjIo6aC5RuDM0sfquhpmtl1TvhMPCp/f1kmZJOlabP2jfUUg4fqhQNEt0laQzFIpqJ6jhTKEYtU6hYDTX3c8ys8MUilG96nUys/6Svh/FLIV5jw5TKPi9o7CqyosKBa/q9zxT4XW+KOmPirpJ3X2mNk+SmXiN7yskLn9z98SV7Q5RSA5fc/e7agmz+q5VgYVJJcsVtXgrFIHOUkj48iSNMLOipOdvMemlhWWM941ex/vR67xcoaBWoPB7+mvSOe5RSGATV3LJUki++yoUJE+RdKGZHaDQDn+EWvbcGACAtuHw6OuJ0fxPt0X/MO9by9w4nbR1oaEhJkq62N3/LElm9rbCP/4PVihO1YmZ9VMoBEyRdIS7V0m60cyqFOY+qhcz6yrpaoUCQuKcj59LekjhM/tvSU/7s8IckBcoFLEaaoPCDawhCsWol939l1FxbKK2ztWKlLqDp17MbIzCDcBvR+d7SiGfyVJY1Xg/hSLPWQrzb0rSLpIeUchPX4lil7s/o6Tii4Xu++slvevuNyftG6SQ99zv7gtqCTNXIZ/rFF078Qbmh5J+FcU8SNIOKQpmi6onX4+KRAcrFESHRa/vVoWbhncozBF6d7Qv0dkKxbbs6tdrZtsrzLvlCsW4exWm2DhT4d8efRQ6t4AmRzEKaBlKFQoukiR3X2tmyxVWPKuPUQpdVvcntdfeoQYUoyTtIGlE9H2qJV+TJ4qsvuPzqKRjzezXDbhmtRXuvkKSog/oadH2bY7fT2Zmeyl0JG1SGEo2QtKxCe/RajP7h6LfQ3WLtJlNUlhx7gZ3T77blHyN7goTVL6ZWIiqpwEKxae1CgXAfjUc112hOyvZJEnPWljG98nofFXRY1zS3UmZWaqVUcqjYYlfcvdyM/uTpAPd/aoo8d1JIZk+SOHuX+Kk9SlvQQIA0EjV8ySeGd24219h4ufkyakTLdfmuQ0bY7m2LOrMir7WN1fbS+Em0X+iQlS1O9SAYpTCTaduCq9xdYr9qXK118zsPYUCUoM7shTm3ywxs+rcbFu52kCF97HBzOwXCsW3hZKWSSpw9/MT9mcoFGb+5+63J2w/U2GOqZvcfZNq9zWFfydP3sZxtRkgabFCAam2OTu/GT0SlSq8V0Vm9n8K3XNdFfK5mZIOq86Rq5lZhbZWkpzTKbxv1ymsgDzZzE5WKObdpTB3VaG2HHlATocmw5xRQMswL8UY8YasWtE9+po8XGpF8oG1SJyAsU/09S6FO2jJj5rmG7hSIdH6eQ37t3VdaXNHUE0/15m7T1G4+zdUoZ1/C2Y2SqGwcl3S7+Fnkj5y9zfqcJkfKNyRe7ShcSoUyVZExawdJXWWlOHuVv1QSBL+kvBzhkLysFTSC9F5PlL4nZ+qcPfTkwtR9eXuj7r7T6LvNyqswnONwt2+udpy6F/H6GumAABIn1cUihl/VfiH/r+jbb+r5TnzJe0YFSka40N3/7LIklRIqo9G5WpRF3znhE3VudqVSp2rJXdAV/uLwg3Mcxp4Xan+udoohd9HY9yhUEQbqdBdluxMhSFsX/5NWJhc/ExJt9ehECVt7vp/rCEBRp1MQxSKZXMV3uecpHxuz+jwIxK2DVGYV/TxhLlL31ZYQOcrkt6UtCq5EFUf7l7h7r9193uinz9TWIH5TYXfz4O+5aqT5HRoMnRGAU2jei6frin2dU3YX21NiuMaovqDq3/S9u3q8uTow3qopEVJcRW7+8tJx9Y4AaW7f2RmLyoMA2vIddPO3a+PrpVqdw+Fu1YXR+3Lf5c0WOHO2JHbOnfUsv0rhfcr1YSddbWroknA3b2gjs/ZUaEV/K7q+QaiOab2cPfkiVA7K8xfVaaQMKbqvOpuZjsrfD7kSJrp7lt1ULl7lZlVt9//OqkbrHp54uSkFQCAxrhdYd6b8xU6dJclLaiRyjsKN24Oip5bbVu5WnJO0iJyNYXXnbjATXVc61PkansrDPlP5QlJn6qOuVqK69ZLNPXD9xTmymqwqEjzr+icqQ4pV5g76jEz+5fCcLtfKBRT/lKHOCcpDMN7oT4LxCTZSWFo3KdRbpbcnVSTAxW6+L/s6HL3GWa2T5TTJcbZT6H7qlyhgJXq73hAdMO1g8LNzZq6/EsVpmIo0tZzZJHTocnQGQU0gWhi6eWS9jOzL9u3o6LFaEkN/XDbljkKLdpHRWPUq52Z4thN2noSyV9qy/8vfKZwB+vb0TA0SZKZDVQo3tQ29O9Kpf7gqst1m5W7v+Pu+ykUn7ZTGMv/sKRX3P252p4bzSvwb4UP618l3U2qMwtLLPdVPVekc/c57j5YSXeFaxgqOEJheN9Mhbtsl6Q45rvRvpkKv+MBNcT7S4XOqyfcfYtuMHf/d3SXr16T7wMAsA27Kyxtv8bd365DIUruXqEwlPyCpF1zFf4hf3DUySLpywU/eqnpcrUp0XW/l9StlSpXK9TWOdPFST9PVhh+doIlrMKcMEXBWUohyhOuUupcrS7Xra/vKMzv9Hwjz1OraG7OkQoFy+8qFKZ+IunqbXUUmdlwhZX2ShW64xvqwOhrfXO6BxT+9l5J2p4qpztWoRN+lkLedliKY66SNDuK48lU14zy2AcUuqIudvfFSdc+N8rpGrMoEZASxSig6VyhcNfrTTM7Pxrj/oZCt8kfm+KC0d2X3ykkEG+Y2Y/N7AZtnrQ70WsKEyZeYGYDzewnCpNBLk84nyvcweqjsBrJRWb2Y4WJDcsk/amWWF5TWNGv3teN0YcKQ90qFO4OHWxmT5rZ6FQHm1lHhULU/pIeSpyboAG+HX19tSFPruMqLJ8oDIfsqHCHMHnyeWnzks9ZSnFn2Mx6mNltCsXGaQoTo24LnzUAgHT4n8Jqadeb2TlmdryZHWFhxdfa/EHSgRZWppUkuXuhwqrDYyW9bGY/NLNLFCazrlAdumgaIlpo5BpJe0h63szOM7P7lXpeq9ckfc3MjjOzQWb2Z4XhXcUJ59uo0Pmzu8JKxxdEOeejCkMBr0tx3mr3KSx6U+/r1oeZ9VB4ry9KHOrYVKKc6DWFYlyWQhfcpWZ2jZn1riHG7RRywD6SfuLusxsRwrcVupX+V98nuntVHecevVWhMz5LIc9KNU3EyQr5XkdJY5J3RjdCX43ivcPda/tbqUZOh7ThjwloOjcq3IXLUrgzcblCa/bx7t5kd4XcvXr1kB4K8wQcoNQJziUKd0J+p1Ck+JpCC/sWcxi4+7MKy8HOV+iE+r3C5IcHufuH2wjnyoZeN93MLM/MxkbXk6J5Dcyst5lNilq5lyi8xt8pFBIvVJhvYYaZ/dPM8hLO10fSswof4K8rrEhSk4ykr8mxZSi0yRcqFCxreg1ZCglFfSZI/7Kn290r3X2ju5dHc12k7G/3oMLdN1XPiWFmuWb2U4WW/jMVEqyv1tYJZmb7m9kZCncnpQZMPg8AQII7FD4Dj1Yosjyo8Fm8MLr5llJUALpA0q1R51O1XyvkNYMkXavQqf2pwjw+W62am0a/iq69s8LUAEMUVqVLdq5CgeRWhZX7Bil03Wzxeerut0g6SlKJwlyRFykMT9zf3WucAsHdy7X1Snt1vm5dRJ36jyl0mt1V3+fXcM5hZraHQkGvImH7EDM7xcweU8hbD1L4Wxkh6X6FDql5ZvbTpC6y8ZLeUli450pPWkEvybZyuqEKueNbKSYPT1Q9cqKhOV2puxdF+Zqr5pyuKsr7vpwry8y2M7NrFH63+yn87afsoEt4znejSeCrC7rkdGg8d+fBg0c7eCh82N0Vdxwxvv4hCm3xLmlKtO2b0c+u0Jn1Z0n9k563o0KC4pJOibb1VSjIuaSnJXXaxrUnRceeU8P+XRSKcf+qYf8RConclOg8P63D6z1a0g0KSzvn13DMz6Lz9Yh+XiDpnhqOPT46tlKh669DHWI4IOH93SBpaNx/Bzx48ODBo3U+FObhqVTo5jlboevj1OizbI6klXU4x28VVgfuEvfrSRHbsOjz8rK4Y0nz6/qnwnCy7mk854kJ+cVV0ba/J2ybqdDZn5P0vMMVOr43ShodbTtQYVieS/ptHa59dXTsjjXsP0Whg+yEGvZfpNDFND86z7g6XPNXCje5CxWmR0h1zFOSpiX9LZ1Rw7E3RfvzJR1Xx/f8koT396O4/654tI0HE5gDaBfcfZGZnauw6txr0bb/RsMEp0l601OsjOPun5nZQZIO92j+KHdfZWZHK3RFXZbqeUk6JX1NvsbHZjZYW68oWO0jhbkAVkl6SHWbJH2aQgFrpWoeFpoqnppi/LeZ9Zc01d3fqsP1pbACzJ8U7oa+4JtXhgEAoL7mKXSZHyPpWwqdJSUKq9BNVuoOny24++Vm9qTXbUU1pMflkuS1dwnV11MKnW7vuXv1lBC/V/hbeNprGGLn7i+Y2RhJY6uPcfc3zeyHkja4+yN1uPa2crp7zOwFSetreP58hcLOIoURDNPqcM0VCjdMP1O40VhbXNvaJoWO9Y2SrvekOaJqcb/CROjvKWlOK6ChzL0+nYEAgNbCzPq4++q44wAAAEDDRJOMd/QGLpIDtFQUowAAAAAAANBsmMAcAAAAAAAAzabdzRmVl5fnw4YNizsMAADQRD744IM17t4n7jiwJXIwAADatvrkYO2uGDVs2DBNnTo17jAAAEATMbOFcceArZGDAQDQttUnB2OYHgAAAAAAAJoNxSgAAAAAAAA0G4pRAAAAAAAAaDYUowAAAAAAANBsKEYBAAAAAACg2VCMAgAAAAAAQLOhGAUAAAAAAIBmQzEKAAAAAAAAzYZiFAAAAAAAAJoNxSgAAAAAAAA0G4pRAAAAAAAAaDYUowAAAAAAANBsKEYBAAAAAACg2VCMAgAAAAAAQLOhGAUAAAAAAIBmQzEKAAAAAAAAzYZiFAAAAAAAAJoNxSgAAAAAAAA0G4pRAAAAAAAAaDYUowAAAAAAANBsmqUYZWb9zOzN6PssM3vazCab2RlNsQ0AAABNy8w6mNkiM3s9euwad0wAAKB1aPJilJn1lHS3pNxo048lTXX3/SR9w8y6NsE2AADQQs1btVFPTV+m8sqquENB4+wm6UF3nxg9ZsYdEAAAqNnb89bo3S/Wxh2GpObpjKqUdJykgujniZIejr6fLGlCE2zbgpmdY2ZTzWzq6tWrG/2CAABAw700e5XOf/AjVVR63KGgcfaRdLSZvWVm95tZh+QDyMEAAGg5rnnpM/3txTlxhyGpGYpR7l7g7hsSNuVKWhp9XyCpXxNsS47hFnef4O4T+vTpk46XBQAAGqjKQxEqM8NijgSN9L6kr7j7AZLyJR2ZfAA5GAAA8VqaX6znZi7XH5+erakL12tk35YxmGyrO1jNYJOkTpI2SOoS/ZzubQAAoIWq7oiiGNXqzXD30uj7TyXtEGcwAABgs7krN+rK5z7Va3NWqcqljpkZOmRUP5331e3jDk1SPKvpfSDpgOj7sZIWNME2AADQQlVWhbmiqEW1evea2Vgzy5R0tKTpcQcEAEB7V15ZpRtfm6dJ17+lDxat17lf2V5P/Wh/zbjsMN126gQN6tk57hAlxdMZdbekZ83sQEmjJb2nMMwundsAAEALVemuDhkmM6pRrdzlkh6QZJKecveXY44HAIB27ZPlBfrZw9P1yfICHTq6n/58zK7K65Idd1gpNVsxyt0nRl8XmtmhCt1Mv3X3Sknp3gYAAFqoiipXBm1RrZ67z1JYUQ8AAMTsjc9W6+x7pqprdgf97dixOmb8di36xl8cnVFy92XavAJek2wDAAAtU1VV6IwCAABA4z0zY7l+8tBHGtSzsx46Zx/17ZYTd0jbFEsxCgAAtF8VVa7MFnynDgAAoLW44635uvzp2dq+T64eP29/dcvJijukOqEYBQAAmlVllSszk2IUAABAY9z25hf64zOf6KAd++if3x+vLtmtp8TTeiIFAABtQiXD9AAAABqsssp15XOf6NY352uv4b10x6kT1CEzI+6w6oViFAAAaFaVVa4MhukBAAA0yMWPzdRDUxfrazv31b9O3qPVFaIkilEAAKCZ0RkFAADQMM/MWK6Hpi7W6fsP06WTRrfaFYpbX/kMAAC0apVV3moTJwAAgLhMW5yvXz46Q+OG9NDFR45q1fkUxSgAANCsKuiMAgAAqJfJ89bo+FveUY/OWbrxxPHKaoVD8xK17ugBAECrU+l0RgEAANTVw+8v1il3TNHA7p30n3P31cAeneIOqdGYMwoAADSrlRtK1LNzx7jDAAAAaPEefn+xLnp0hg7asY+uP2GcunfKijuktKAzCgAANBt31yfLC7R9n9y4QwEAAGjRHnhvkS56dIbGD+mh20+d0GYKURLFKAAA0Izyi8pVWFapnfp3izsUAACAFsvddcfb8zV2cA89cPY+rX6OqGRt69UAAIAWbc7KjZKkEXl0RgEAANTk0Q+Xat6qTfrehEHKycqMO5y0oxgFAACazQcL10uSxg3pEXMkAAAALdOCNYX6zeMzNWFoTx2/55C4w2kSFKMAAECzeXveGo3s20U9mMAcAABgK0vWF+mce6eqY2aGbjhxvDLb6ArErKZ5nfMvAAAgAElEQVQHAACaxbTF+Zr8+Vqduu/QuEMBAABoUUrKK3XDq/N021tfKCszQzefvIf6d8+JO6wmQzEKAAA0OXfX7//7sfK6ZOu8r46MOxwAAIAW4/0F6/Tzh6dr0boiHTa6n35x+E7asV/XuMNqUhSjAABAk5syf50+WpSvX359Z/Xt1nbv8gEAANTHa3NW6cy73lfvLtm6/6y9tf/IvLhDahYUowAAQJO7a/IC9crtqNP2GxZ3KAAAAC1CYWmFfvHwdPXpmq3//GA/DendOe6Qmg3FKAAA0ORmLt2gA0bmqVPHtrc0MQAAQEP87qmPtbawTA+ds0+7KkRJrKYHAACaWH5RmZasL9bIvl3iDgUAAKBFeOKjpXrkgyU6bb9h2ntE77jDaXYUowAAQJOau2qTJGn0gG4xRwIAABC/kvJKXfLELE0Y2lO/mTQq7nBiQTEKAAA0qcnz1spM2mNoz7hDAQAAiN197y7UptIK/eywHZWV2T7LMu3zVQMAgGbz6pxVGtW/m3rmdow7FAAAgNg98sESTRjaU/tt3z5WzkuFYhQAAGgyhaUVmr44X6MHMkQPAABg1cYSfbpio766c9+4Q4kVxSgAANBkpi/JlyQdMaZ/zJEAAADE75qX5spMOnyXfnGHEiuKUQAAoMms3lgqSRrazpYrBgAASDZv1UY9OGWRvjt+kEb27Rp3OLGiGAUAAJrMkvXFkqQB3TvFHAkAAEC8rn15rnI7ZuoXh+8UdyixoxgFAACazLrCMnXumKnc7A5xhwIAABCb9YVlemn2Sh0+pr/6dcuJO5zYUYwCAABNZun6YvUn4QIAAO3cZf/9WKUVVTphryFxh9IiUIwCAABN5os1mzSiT27cYQAAAMRm+YZiPTV9mU7ce4j2HNYr7nBaBIpRAACgSVRVuRasLdLwPIpRAACg/frXG18ow0znHrR93KG0GBSjAABAk9hQXK6yiiomLwcAAO3WorVFuv+9hfrehMEawurCX6IYBQAAmsTi9UWSpAHdmTMKAAC0T1e/OEcdMjL000N2iDuUFoViFAAAaBIfLyuQJO0ysHvMkQAAADS/GUvy9d/py3TWgcPVlwVdtkAxCgAANInF64rUIcO0XU+G6QEAgPZlzaZS/eShaeqV21HnHDQi7nBanA5xBwAAANqmZfnF6t89R5kZFncoAAAAzerWN7/QF6sLddspE9Q1JyvucFocOqMAAECTWJpfrO160BUFAADalyenLdUt//tC3xo7UIeM7hd3OC0SxSgAAJB2ZRVVmrNiowb1ZNUYAADQfnyyvEAX/meG9hzaS38+Zte4w2mxKEYBAIC0W7y+SAUlFdp3+95xhwIAANAsqqpcf3h6tjp2yNDNJ++h3GxmRqoJxSgAAJB2qwpKJUkDu7NyDAAAaB+enL5Ukz9fq99MGqVeuR3jDqdFoxgFAADSbmVBiSSpH8UoAADQDri7HnhvkUbk5eq4CYPjDqfFoxgFAADSbml+sSRpYHcmMAcAAG3fk9OW6f0F63X8XoOVwUrC20QxCgAApN2y/GL16JylTh0z4w4FAACgSW0oLtflT89WXpdsnb7/8LjDaRWYTQsAAKTd1AXrNXpAt7jDAAAAaHKPfbhE6wrLdM8Zeykrk56fuuBdAgAAabWhuFxzVm7UviNYSQ8AALRtpRWV+tuLn2nMdt104A55cYfTalCMAgAAafXx0g2SpNED6YwCAABt273vLNSm0gr9cOJImTFXVF1RjAIAAGm1prBMkjSoZ+eYIwEAAGg6T3y0VH969hNNGNpTX9+lf9zhtCoUowAAQFp9urxAktQzNyvmSAAAAJrG8g3FuuiRGdptu+6698y9WUGvnihGAQCAtJq/plCS1LdrTsyRAAAANI0H3lukssoqXfmd3Vg9uAEoRgEAgLRavqFEw/Ny4w4DAACgSZRXVun2t+bryF37axSrBzcIxSgAAJBWqzeWatzgHnGHAQAAkHbursv/O1tFZZU6avft4g6n1aIYBQAA0qaqyrWyoET9ujNEDwAAtD0PT12se99dqO9NGKRDR/WLO5xWi2IUAABIm8KyClVUuXp17hh3KAAAAGm1obhclz75sUb27aI/Hb0rk5Y3AsUoAACQNptKKyRJXXI6xBwJAABAet09eYHKKqp0+bd2UVYm5ZTG4N0DAABpU1hdjMqmGAUAANqOp6Yv0zUvf6a9h/fSfiPz4g6n1aMYBQAA0mbFhlJJUvdOWTFHAgAAkB6zlxXoF/+ZrvFDeuqWkyfEHU6bQDEKAACkzfQl+ZKk3QZ1jzkSAACAxquorNKPH/xQ3XI66KaTxqt7Z264pQPFKAAAkDbLNxSrR+cs9WACcwAA0AY8+P5ifb66UL86YpT6dmW14HShGAUAANJmeX6J+ncjUQMAAK3f4nVF+stzn2rs4B76zvjt4g6nTaEYBQAA0mbB2kJt16NT3GEAAAA0yqqCEn3/tve0qbRCfzt2N5lZ3CG1KRSjAABAWlRVuZasL9bgXp3jDgUAAKBRfvPELC1ZX6RrjhurkX27xh1Om0MxCgAApEVBSblKK6rUvzvD9AAAQOt17zsL9NLslfr5YTvp6HGD4g6nTaIYBQAA0qKguEKSlNclO+ZIAAAAGmZpfrEuffJjHbhDns4+cETc4bRZFKMAAEBaFJSUS5K65XSIORIAAID6Kyqr0Gl3TJEkXX7UGHXsQMmkqfDOAgCAtCgojopRnbJijgQAAKB+KqtcP31omuau2qQ/H7Orhuflxh1Sm0YxCgAApMXmziiKUQAAoHX54zOz9cLHK3XeV7fXCXsNiTucNo9iFAAASIvF64olSXldO8YcCQAAQN09N3O57nx7gY7ctb9+duhOcYfTLlCMAgAAafHZyo3q2zVbfbuymh4AAGgdlqwv0iVPzNKoAd107XHjlJlhcYfULlCMAgAAabFwbZGG9u4cdxgAAAB1UlpRqfPu/1BllVW64cRxTFjejHinAQBAWizNL9agnhSjAABA6/Dw1CWavmSD/vKd3bR9ny5xh9OuUIwCAABpsb6oTD07M18UAABo+Soqq3TL/z7XuCE9dMSY/nGH0+5QjAIAAI1WUl6porJK9ezMSnoAAKBlKyqr0Nn3TNXidcU69yvby4x5oppbh7gDAAAArd+0xfmSpCHMGQUAAFqw/KIynXbn+5q+JF+XTBqlw0b3izukdoliFAAAaLSVBSWSpF0Gdos5EgAAgNQqKqt0wb+n6eNlG3TT98fr62MGxB1Su8UwPQAA0Gj5ReWSxJxRAACgxbrtrfl647PV+skhO1KIihnFKAAA0GirN5YqM8PUg2IUAABogR6eulhXPvep9h7eSz+cuH3c4bR7FKMAAECjLdtQrH5ds5WZwQSgAACgZXlz7mpd9MgMjR/SQ3ecticTlrcAFKMAAECjrSooVd9uOXGHAQAAsIWFawv184ena0SfXN1+6p7KzWbq7JaAYhQAAGi01RtL1bdrdtxhAAAAfOnz1Zs06R9vqaS8UjeeOF49c5lOoKWgGAUAABpt1cYS9e1GMQoAALQM5ZVVuvSJWdpUWqEnzttfowaw4m9LQn8aAABolIKScq0vKteA7p3iDgUAAECvfrpSf3lujuas3KgLD99JI/p0iTskJKEYBQAAGmXR2iJJ0si+JHoAACBe/3x9nq56fo6G9u6sG08cr0m7DYg7JKRAMQoAADTKmk2lkqS8LszDAAAA4vOfqYt11fNz9M2xA/XXY3dTdofMuENCDShGAQCARllXWCZJ6p3LnFEAACAe7q4bXpunQT076ZrvjVWHTKbIbsn47QAAgEZZuykUo3rRGQUAAGJy9QtztHBtkc7/2g4UoloBfkMAAKBR1haWqWNmhrpm03ANAACa39QF63TTG5/rqN0H6rt7DIo7HNQBxSgAANAoazeVqlduR5lZ3KEAAIB2prSiUufe96EGdu+kK47eVRkZ5COtAcUoAADQKOsKy9SbIXoAACAGD72/WGs2leoXh++oXLq0Ww2KUQAAoFG+WFOoAd07xR0GAABoZz5dUaDLnvpY+23fW9/efbu4w0E9UIwCAAANtq6wTPPXFGqv4T3jDgUAALQjm0ordOkTsyRJVxy9K9MFtDLNXowys55m9qyZvWlmN0fbbjezyWZ2ScJxDd4GAACax/w1myRJI/t2iTkSxMXM+pnZR3HHAQBoP0rKK3XOPVP1/oL1+t03d9GwvNy4Q0I9xdEZdbKk+9z9QEldzewiSZnuvp+kgWa2g5kd09BtMbweAADarTWbyiRJfbvmxBwJYvRXSYzTBAA0i5LySp13/4ea/PlaXX7ULjp1v2Fxh4QGiKMYtVbSTmbWQ9JgScMkPRzte1XSAZImNmLbVszsHDObamZTV69enb5XAgBAO7e+MBSjeuYygXl7ZGZfk1QoaUUN+8nBAABpde3Lc/XKp6v0s0N31Cn7Dos7HDRQHMWotyTtIOl8SZ9Kypa0NNpXIKmfpNxGbNuKu9/i7hPcfUKfPn3S+mIAAGjP1hWFYlSvzhSj2hsz6yjpt5J+VdMx5GAAgHR6esYy3fzG5zpm3HY6/2AGRrVmcRSjrpB0rrtfrlCMOlGbW7u7RDFtasQ2AADQTPKLypWTlaFOHTPjDgXN71eSbnT3/LgDAQC0fS/PXqkfP/iRdh/cQ1ccs2vc4aCR4ijedJa0q5llStpb0pXaPLxurKQFkj5oxDYAANBMZi8rUE+6otqrQySdZ2avS9rdzG6LOR4AQBs1a+kGnffAhxraq7PuOXMv5WRxE6y16xDDNf8s6U5JQyW9I+kaSW+a2UBJR0jaR5I3YhsAAGgG7q4p89fp8DH94w4FMXD3g6q/N7PX3f2sOOMBALRNKwtKdNy/3lFmhunO0/dSt5ysuENCGjR7Z5S7T3H3Xdy9i7sf6u4FChORvyvpq+6+oTHbmvv1AADQXi3bUKKyyirtNaxn3KEgZu4+Me4YAABtT0l5pU65fYoqqlyP/XA/Dc/LjTskpEkcnVFbcff12rwqXqO3AQCApjd53hpJ0rghFKMAAED6Xfncp5qzcqMumTRKO/fvFnc4SCMm/AYAAA2yeF2RJGn0AJJDAACQXvNWbdS97y7U13fprzP2Hx53OEgzilEAAKBBisoq1SkrUxkZFncoAACgDVm8rkhn3/OBMkz6/VG7kGu0QS1imB4AAGh9isor1bkjq9kAAID0mb+mUKfdOUXrCst0x2l7ql+3nLhDQhOgGAUAABqkuKxSnShGAQCANPl89SadeOu7Kiqt1O2n7am9hveKOyQ0EYpRAACgQYrKKuiMAgAAafHszOX6yUPT1DEzQ9cetzuFqDaOYhQAAGiQorJKdepIKgEAABrnxtfm6a8vztHO/bvp7jP2VN+uDM1r68ggAQBAgxSXVapzFp1RAACgYTaVVuj6V+fqX298oSPG9Ndfjx2r3GzKFO0Bv2UAANAgG0sqNKhnp7jDAAAArdCnKwp0wi3van1RuY4Y0183nDhemaya125QjAIAAPXm7vpizSZ9Zac+cYcCAABamSenLdWFj8xQ1+wOuvO0PTVxpz4yoxDVnlCMAgAA9VZYVqnySlfv3I5xhwIAAFqRG16dq7+++JnGD+mhm0/aQ327MT9Ue0QxCgAA1Ft+UZkkqUfnrJgjAQAArcUHC9frby99pn1H9NZNJ41Xj87c1GqvMuIOAAAAtD75ReWSRBIJAADqZPrifP3g3qnqkt1BN36fQlR7RzEKAADUW3UxqieJJAAAqIW76/GPluiEW99VdodM3XX6nurFMP92j2F6AACg3tYzTA8AANTBzW98ob88/6l2GdhNN5+0hwb36hx3SGgBKEYBAIB6yy+uHqZHMQoAAKR29+QF+svzn2rs4B56/P/2U0YGK+YhYJgeAACot/zCqDOqE232AABga+8vWKerX5ijfUb00j2n70UhClugGAUAAOptbWGZcjtmqmMHUgkAALClFz9eoRNvfVd9u2br79/bXd3ppEYShukBAIB6m7+mUMPycuMOAwAAtDDTF+frZw9P17DeuXr4B/uqJ5OVIwVuZwIAgHpbsr5Ig3syASkAANjsvS/W6sRb31WGSTefvAeFKNSIYhQAAKiXqirX4nXFGtyrU9yhAACAFmLuyo067c731bdbjv774wO0fZ8ucYeEFoxiFAAAqJf5awtVVlml/t0pRgEAAOml2Ss16fq3lJ2VoVtO3kNDezOUH7VjzigAAFAvKwtKJEnD8ximBwBAe/fW3DX68YMfakReru4+Yy/165YTd0hoBeiMAgAA9bJ6Y6kkMWcUAADt3OerN+n0u6aof7cc3XHanhSiUGd0RgEAgHpZsKZIZtLgXhSjAABorxatLdIZd72vzAzTg+fsowEM30c9UIwCAAD1smR9kfp0yVZOVmbcoQAAgBg88dFSXf70bFW56+7T96IQhXqjGAUAAOplzaZS9emaHXcYAACgmbm7/v7SZ7r+1XkaNaCbbjhxHKvmoUEoRgEAgHpZll+igT2YEwIAgPbmulfm6vpX5+l7Ewbp8qPG0CWNBmMCcwAAUGcl5ZX6bNVG7oICANDOPDltqa59ea6+OXag/vKd3ShEoVHojAIAAHW2trBM7tLIvhSjAABoD9xd17w8V/94Za52G9Rdfz5mV5lZ3GGhlaMzCgAA1NmqghJJUl4X5owCAKA9uOmNz/WPV+bqkFH9dO+Ze6tLNj0taDz+igAAQJ0tWFsoSRrYg1VzAABo696au0ZXPT9Hk3YboBtOGEdHFNKGzigAAFBnyzeEzqhheZ1jjgQAADSl9YVluvzpj9WvW7auOJqheUgvilEAAKDOVm4oUdecDurckeZqAADaqmX5xTrp9ve0YE2Rfv+tMereKSvukNDGkEkCAIA6m7l0g3Zg8nIAANqsjSXl+s5Nk7WxpEL//P54HTK6X9whoQ2iMwoAANRJUVmFZizZoL1H9I47FAAA0AQ2lpTrZw9P14qCEt11+p4UotBk6IwCAAB1MntZgSqqXBOG9ow7FAAAkGYVlVU6/c73NXXhep1/8A6aMKxX3CGhDaMYBQAA6mTNpjJJUr9uOTFHAgAA0u2Pz3yiqQvX609Hj9H39x4adzho4yhGAQCAOskvCsWonrkdY44EAACki7vr2pfn6q7JC/Sd8YMoRKFZMGcUAACok5UFpZKknp1ZUQcAgLbiqenLdN0rc/Xt3QfqT0ePiTsctBN0RgEAgDpZuLZQvXM7qlNWZtyhAACANHh9zipd+MgM7T64h64+dqyyMulXQfPgLw0AANTJ52sKtfOArjKzuEMBAACNVFJeqUuemKU+XbJ126kTKEShWfHXBgAAtsndNX/1Jg3Py407FAAAkAZXPPuJlqwv1hXH7Kq8Ltlxh4N2hmF6AABgm9YVlqmgpELD87rEHQoAAGgEd9dtb87XPe8s1JkHDNdXduwTd0hohyhGAQCAbVqzKayk168bd04BAGjNrn15rq57Za4OGdVPF319p7jDQTtFMQoAAGxTQUm5JKl7J1bSAwCgtXp46mJd98pcfWvsQF1z3O7KzGAeSMSDOaMAAMA2bSiiGAUAQGv29rw1uvixmdp/ZG9d9d3dKEQhVhSjAADANm0oDsWobjkUowAAaG1e+WSlTrljikb0ydV1x49TTlZm3CGhnWOYHgAA2KYl64tlJvVlzigAAFqV6Yvzdd4DH2r0gG6676y96XJGi0BnFAAA2KYZS/I1PC9XnTtyHwsAgNbinc/X6rs3T1bXnCzdftoEClFoMShGAQCAWrm7Pli0XmMH9Yg7FAAAUEfzVm3SWXe/r37dcvTfHx2gvl1z4g4J+BLFKAAAUKv1ReXKLyrXmO26xx0KAACog2X5xTr+lndlZnrw7H3UvzuFKLQs9NoDAIBardhQIkkaSCILAECr8PDUxVqzqVTPnH+ABvfqHHc4wFbojAIAALVatTEUo/p2oxgFAEBLt3ZTqW5/a772GtZLuwykqxktE8UoAABQq6X5xZKkAXRGAQDQ4l31/BxtLKnQL4/YOe5QgBpRjAIAALXaVFIhSazAAwBAC3ffuwv10NTFOm2/YdpjaM+4wwFqRDEKAADUqrSiSpKU3YG0AQCAluqZGct1yROz9JUd++g3k0bFHQ5QK7JKAABQq5LySnXIMHXIJG0AAKAlKi6r1MWPz9SIvFzdcsoeyuIzGy0cf6EAAKBWJeVVysnKjDsMAACQQlWV69Q7pmhDcbl+M2mUsjvwmY2Wj2IUAACoVUlFJUP0AABooW54bZ6mLFinCw/fSQeP6hd3OECddIg7AAAA0LKV0hkFAECL4+66/tV5+vtLn2nSbgP0g4NGxB0SUGcUowAAQK1KKiqVnUVnFAAALUVxWaV+/p9penbmCk3adYCuPW535nZEq0IxCgAA1KqkrFI5zD8BAECLcdlTH+vZmSt08ZE76+wDR8jM4g4JqBeKUQAAoFYFJeXq1omUAQCAluD2t+broamLddYBw3XOQdvHHQ7QIPTxAQCAWq0rLFOv3I5xhwEAQLs3ed4a/eHp2Tp457666Os7xx0O0GAUowAAQK3yi8opRgEAELMVG0p0yZOz1Kdrtm44cbw6stItWjF67gEAQI0qKqu0vqhMvXKz4w4FAIB2a/XGUh39z7dVUFyuW0+doE4dmcsRrRvFKAAAUKM1m8pU5VK/bhSjAACIQ2WV6+LHZ2rVxlI9/sP9tNugHnGHBDQafX0AAKBGqzaWSJL6dc2JORIAANqna176TC/NXqlLJo2iEIU2g2IUAACo0cqCUklSXzqjAABodl+s3qQbX5+nb44dqNP3Hx53OEDaUIwCAAA1WlkQdUZ1ozMKAIDmtHBtob73r3fVpWMHXXwkK+ehbWHOKAAAUKOVBSXKMKk3q+kBANBsyiqqdMG/p6morEL3nLGXBnTvFHdIQFpRjAIAADWav6ZQ/brlqEMmzdQAADSHkvJKnXX3VE1bnK9/fn+8JgzrFXdIQNqRWQIAgBqt2liqwb06xx0GAADtQkl5pS58ZIbemrdGFx6+k47cdUDcIQFNgs4oAABQo7WbSrVz/25xhwEAQJu3fEOxTr/zfX26YqMuOHgH/XDi9nGHBDQZilEAAKBGazaVqXcX5osCAKApFZSU66Tb3tPnqwt1w4nj9I3dBsYdEtCkKEYBAICUyiqqtKG4XHldsuMOBQCANmvFhhL94N6pmr+mUDefNF5fH8PQPLR9FKMAAEBKyzcUS5L6d8+JORIAANqmVz9dqR/e/6HcpcuPGkMhCu0GxSgAAJDS+qJySVIew/QAAEi7t+au0bn3fai+XbN19xl7afs+XeIOCWg2FKMAAEBK+UVlkqTunShGAQCQLlVVrqtfnKObXv9cg3p20oNn78PKtWh3KEYBAICUNhSHzqjunbJijgQAgLbjN0/M0oNTFunYPQbpD98eo5yszLhDApodxSgAAJDS+sLQGdWjM8UoAADS4c635+vBKYt0xv7Ddek3RsnM4g4JiAXFKAAAkNKCtUXKycpQDzqjAABolMoq168enaH/fLBEB+6Qp4u+vhOFKLRrFKMAAEBKM5bka5eB3dUhMyPuUAAAaLWKyir0m8dn6fGPluqUfYfq0m+MVhafrWjn+C8AAACktHBtkXbsx8o+AAA0VEVllS56ZIYe/2ipTt13qH7/rV0oRAGiMwoAAKSwemOp1haWaUQexSgAABpi1cYS/fC+DzV14XqdfeBw/WbS6LhDAloMilEAAGArs5ZukCTtNqh7zJEAAND6rN1UqpNue0+fry7Ub78xWmccMDzukIAWhWIUAADYysyoGLXLdhSjAACoj0+WF+ice6dqVUGp7jljL+0/Mi/ukIAWh8GqAABgK+/NX6u8Lh3VJZv7VgAA1NWU+et01A1vq6S8ikIUUAsyTAAAsIX8ojLNXlagXQbSFQUAQF1UVrke+3CJLnvqY/XvnqP7z9pbg3t1jjssoMWiGAUAALbwxmertb6oXP83cfu4Q0ELZ2a9JO0h6SN3XxN3PAAQh5LySv34wY/00uyV2qFvF9131t7q1y0n7rCAFi22YXpm9k8z+2b0/e1mNtnMLknY3+BtAACg4T5buVGZGabxQ3rGHQpaMDMbIOkZSXtJes3M+sQcEgA0u4rKKp159/t6afZK/fzQHfXCTw6iEAXUQSzFKDM7UFJ/d/+vmR0jKdPd95M00Mx2aMy2OF4PAABtyVvz1mrc4B7q1DEz7lDQsu0i6afu/idJL0gaH3M8ANBs3F3Pz1qub1z/lt6et1aXfmO0fnzwDsrIsLhDA1qFZi9GmVmWpFslLTCzoyRNlPRwtPtVSQc0cluqa55jZlPNbOrq1avT92IAAGhjisoq9PHSDdp7RK+4Q0EL5+4vu/u7ZnaQQnfUO8nHkIMBaIvWbirVSbe/p3Pv+1BFZZU6/+AddMb+w+IOC2hV4uiMOkXSbElXKSQu50laGu0rkNRPUm4jtm3F3W9x9wnuPqFPHzrIAQCoybRF+aqock0YRjEK22b/z959R9lZ1fsff+/pSSaZTHovkFBTSKOEjoJgAQWkKCKg4g/0WrFcRa96vV7BCyIoVUGwARbAqxepUgRCSQESSCe9t5lML2f//phJCCGETHJmnnPOvF9rZWXOc07gk7XgzDOfs/d3hxCAc4FGoHnn570Hk5Rrahqa+Nhtz/PSks384IxDefyrx/OVkw+g5e1Q0p5KooyaANwaY1wD/BZ4CujS+lxpa6aqfbgmSZL20pML1hMCTBruvCi9u9jic8CzwAeTziNJ7WnlllrOu3Ua89Zu5cdnjeXCo0ZQkO+PoNLeSOL/nIXAfq1fTwZG8Ob2uvHAEmD6PlyTJEl76cU3NjFucBk9SgqTjqIMF0L4RgjhwtaHPYEtSeaRpPb0yGtr+eD1TzNvzVZu/PhEPjJhSNKRpKxWkMC/81fA7SGE88LSyiQAACAASURBVIBCWuY+/TWEMAg4DTgSiMDTe3lNkiTthZqGJmYs28KnjhmZdBRlh1uBe0MInwZmAw8nnEeS2sUdz7zB9//3Nfbr041ffHwMU/fvk3QkKet1eBkVY9wKfHTHayGEE4CTgatjjBX7ek2SJLXd/LVVAOzXt1vCSZQNYoybabkHk6Scde+Ly/nPv73GSQf146YLJlJc4EmzUjoksTLqbVpvZu5N1zVJktR2yzfVADB+SM+Ek0iSlKytdY18+77Z/PXlVUwZUc7PPzbBIkpKo4wooyRJUvKef2MjpcUFHDSge9JRJElKzKL1VXzp7lm8urKCfztpFJefMIouRRZRUjpZRkmSJADWVNQxtFdXTwaSJHVa05du4tN3vkRDU4prPjqesyY5qFxqD5ZRkiQJgIraRnp28RS9ziyEEIC+wNYYY23SeSSpI01fuplP3v4ivUuL+PXFhzOyjzMUpfZiGSVJkogxsrqijrGDy5KOog4WQugK/BtwLlAKbAC6t15/HPhFjHFWghElqd3NX7uVC3/1PL1Ki/jtp45gaK+uSUeScprr8CVJEq+trmTF5lqOHd036SjqQCGEU4EZQD7woRjjATHGqTHGscBBwAPAbSGEn4YQHJgiKec0Nae44bEFnHnjs3QpKuAPnznSIkrqAJZRkiSJJRtaTtKbONyT9DqLEMLFwH8Bp8QYfxRjXLnj8zHGxhjj34CjgCbg763b+CQpZ/zkoXlc88h8JgzryX2XT2VIuUWU1BHcpidJklhbWQdAv+4lCSdRB3oK+HOMsXJ3L4oxNgFfCyFMjDHGjokmSe3vV/96g1ueWsxHJgzmp+celnQcqVOxjJIkSazbWk9hfqC8qwPMO4sY46Kdr4UQrgQuAIp28fr9OiKXJLW3hqYUP3loLrc9/QanjRnAVWeNSzqS1OlYRkmSJNZtraNf9xLchdXpfRP4CjAv6SCS1B7um7mCqx6cx5rKOs6bMpQffngMBflOr5E6mmWUJEli/dZ6+nYvTjqGkvcboDcwLcZYn3QYSUqXVCpy3WMLuP6xBYwZ3IP//PAYTj6kf9KxpE7LMkqSJLF+a72nBwlatuf9F/DDHVbJBSDGGD1NT1JWemr+eq7448us21rP2ZOG8F8fGUNxgW9pUpL2uIwKIQwEjmfXMwTuSmcoSZLUsTZWNzBhmCfpibOBDwJzkg4iSfsqlYpc//gCrnt0AQPLSvjpueP58GGD3ZIuZYC2rIx6CojAyp2uR8AySpKkLBVjZFN1A+Vd3/Z5kzqfW4D3AwuBuoSzSNJeS6Ui/++303n4tbV8aPwgfnD6oZR38/uclCnaUkYVA++NMc5vrzCSJKnjba1vojkVLaMEcEXr75fvdD0C7mmRlDWuemguD7+2lstO2J+vv+9AV0NJGaYtZdSVwIMhhHuB2h2fiDH+IK2pJElSh6moaQSgrEthwkmUtBijR0pJynr3vLiMW55czPmHD7WIkjJUW8qoa4FXgQHtlEWSJCWgoraljOphGdXphRAef6fnYowndWQWSdob05du4kf/N5f+PYr53umHWkRJGaotZdRC4CsxxpntFUaSJHW8+Wu3AjCyT7eEkygD3LnD16XAVOAM4DvJxJGkPffikk1c+KsXKO9ayD2fPcoT86QM1pYyahPwWAjhId6+Te+StKaSJEkdZuayLZQWFzCqX2nSUZSwGOOdO136RQjhw8DHgZ8mEEmS9sgfX1rO9//3NQaWlXDPZ4+ib/fipCNJ2o22lFHPt/6SJEk55I0N1YzqV0p+nlsZ9HYxxvtDCP+ddA5JeievrNjCN/78CmMGl3HzBZMsoqQs0JYy6p/tlkKSJCVmU3UDA8tKko6hDBBCGLbTpXzgJMD/QCRlpBnLNvPpO19iYFkX7rhoCr1LLaKkbNCWMupOWo71DbTMEOgFNACrgf3SH02SJHWEDVX1HDKoR9IxlBmW8Ob93o7X/i2JMJL0TppTkdueXsz/PDSPvt2L+eUnJ1tESVlkj8uoGOPIHR+HEEYDNwO3pjuUJEnqGHWNzazbWs+wXl2TjqIMEGPMSzqDJL2b9Vvr+cIfZvLc4o0cd0Bfrj/vMHp2LUo6lqQ2aMvKqLeIMS4IIZwBPAPck75IkiSpo2ytawKgvJs38Z1VCOG4PXldjPGp9s4iSe+moqaRC29/gUXrqvj+6Ydy4VHDCcGZh1K22esyqlUzUJ6OIJIkqeNtrK4HoLTY4687sSd4+9Y8Wq/tyP9IJCWqORU577ZpvL66ktsunMzJh/RPOpKkvbTHZVQI4fadLuUDRwIvpTWRJEnqMG+srwZgRO9uCSdRgkbu4toA4IvAR4HlwDUdmkiSduHmJxfx+upKvvie0RZRUpZry8qopTs9jsDjwN3piyNJkjrS4g0tZdTo/t0TTqKkxBi33+O1zgS9AvgEMB+4CLg7xticTDpJaplv+O9/eZX7Zq5kyohyvvTe0UlHkrSP2jLA/PvtGUSSJHW8ReurGNCjhNLifd25r2wWQjgc+AZwOvAscHaM8f+STSVJMG/NVi777XQWb6jmwqOG841TD3JGlJQDdnvnGUJ4fA/+GTHG+J405ZEkSR1oXWU9A3uWJB1DCQohPAkcQ8ss0HtpOZxmRAjh8h1fF2O8MYF4kjqx5xZt5JJfv0hRQR63fGIS7zt0QNKRJKXJu30MuvPWvG16Ae+nZW7UyrQmkiRJHaa2sZluRa6K6uSGA8tav57a+mtnEbCMktRhXlmxhU/f+SLdivP5/WeO5AC3k0s5Zbd3nzHGi3d8HEIYCnwVOBtYBPwEuKvd0kmSpHZV29BMedeipGMoQTHGEUlnkKQdPTxnDV+8exa9uhVxx8VTLKKkHLRHH4WGEMYCXwfOAWYBnwTuizHufOSvJEnKIlX1TXQtyk86hjJICGEg8EFaVkz9AvhQjPHWZFNJ6gxqG5r5j7/O5t6XVnDIwB7cdMFEhnvaq5ST3m1m1Im0lFCnAI8Cp8YY/9kRwSRJUvtKpSKrttTygXEDk46iDBFCeA/wv0AF0Bv4PfCDEEKfGOOPEg0nKaet21rHZ+58iZdXVPCpY0bypfeOpntJYdKxJLWTd1sZ9Vjr783AROCeXZ1cEGPsl+ZckiSpnW2uaaApFenXvTjpKMocPwW+FWO8LoSwGagCPgLcDVhGSWoXzy7awNf++AqrK2r52XmHccZhg5OOJKmdvVsZdfG7PC9JkrLUxuoGAPqUWkZpu2G0nKi3oyVAWcdHkdQZrNhcw0V3vEh510J+9+kjOWr/3klHktQB3m2A+Z27uh5CKASaWl/j3ChJkrLQhqp6AHqXOsBc202jZVveF2g5QS8C57Zel6S02lBVz/E/eYLmVOSXF05h7BB7b6mzyNvTF4YQSkII14UQVgK1wFhgaQjhkHZLJ0mS2s2GqpaVUX1dGaU3fZGWWaHrgR7A08CXgS8kGUpSbvreX+fQnIrcduFkiyipk9mj0/Ra3QAcBfwn8BNgK3A/cD3w3vRHkyRJ7amipqWM6tnVlVFqEWOcF0I4GPgQMBRYCvw9xlidbDJJueaXTy/mb6+s5gvvGc3Jh/RPOo6kDtaWMupM4KgY4/wQwn/TMtT8x8DcdkkmSZLaVXVDMwDdivMTTqJM0lo83Z10Dkm5qbE5xdf/9Ar3zVzJ4SN78YWTRiUdSVIC2lJGbQb6A/N3uNaflmXckiQpy9TUNxEClBRYRqlFCOENWuZEvU2Mcb8OjiMpx6zcUss5Nz/Hyi21nD5+EFefPY6C/D2eHCMph7SljLoVuD+E8IvWP3cmcAFwU3sEkyRJ7aumoZmuhfnk5YWkoyhzXLTD16XAVOAzwBWJpJGUM6rqm/j4bdNYuaWWH31kLB87YljSkSQlqC1l1E+ARuBSWgafXwrcQsvMKEmSlGWqG5rpWtyWWwHluhjjkztd+nsI4W/A94G7EogkKQe8tGQTl/9uBuu21nPbhZOdESVpz8uoGGMEftr6S5IkZbmahia6FrlFT7sXY3wuhOASBkltFmPkt9OW8p0H5pAX4Ocfm2ARJQloQxkVQrjwnZ6LMfpJmSRJWaa6vpmuRa6M0ptCCMftdCkfOIl3mCMlSbtz3aML+NljCxjaqws3XzCJQweVJR1JUoZoyx3oxTt8XQocRMt2vedx2bYkSVmnpqGJbq6M0lvdudPjCCwFPplAFklZKsbIV+99mb/MXMmhg3rw58umUlLo9xtJb2rLNr0Td3wcQigHbgSmpTuUJElqf9UNzfQocWWU3hRjHJl0BknZLcbIl++Zxf2zVnHyIf254fwJFlGS3mav70BjjJtbt+7NAH6WvkiSJKkj1DY0MbBHSdIxlEF2sU3vbWKMT3VEFknZJ8bIl+6ZxQOzVvH+sQP4+fkTPbFV0i7t68ehPYDydASRJEkdq7q+ma7Fflqtt/gNMARoBjYCfWgZy7AUCLRs29svsXSSMtpV/5jHA7NWcfr4QVx37mEWUZLeUVsGmP+Ttw6vzAfGAH9MdyhJktT+WmZGuU1Pb/E3oAvwhRhjVQihDLge2Bhj/Eqy0SRlqg1V9Xz7vld5aM5ajj+gLz877zBCsIiS9M7acgf6650eR2BpjPHJ9MWRJEkdpbqhma4OMNdbnQNMjDFWAcQYK0II3wFmA5ZRkt5mdUUtp173NBW1jZx66ABu+NgEiyhJ76otA8x3Pl1FkiRlqfqmZhqaUnQrdmWU3mIzcCpw2w7X3g+sSSaOpEx213NL+O4DcwC4+YJJnDpmQLKBJGWNfdmm9zYxxpP2OZEkSWp3KzbXAjC4Z5eEkyjDfAf4bQjhs8AKYARwCHB+kqEkZZYYI9++fza/f34Z/boXc/35Ezhyv95Jx5KURdrycehc4FzgFmAJMBr4FC3b92alO5gkSWo/yzbWADC8d9eEkyiTxBjvCSG8BnwEGAC8CPw5xjg32WSSMkVzKnLFH1/mvpkrOfHAvtzyickUFeQlHUtSlmlLGXUkcFaM8Z/bLoQQ/gH8LMb45bQnkyRJ7WbZppYyaphllHYSY3wVeDXpHJIyT11jMx+58VleX13JyYf055YLJnlinqS90pYyagSwcqdrK4DBaUsjSZI6xMJ1VZQU5tG3tDjpKJKkLHH572bw+upKPnfi/lxxyoEOKpe019pSRj1CywyB79NSSo0ArgQebIdckiSpHb26soID+nf3BwlJ0ruauWwz3/jzK8xfW8Xk4eV87X0HJR1JUpZrSxl1GXATcF/rn2sE/gR8vh1ySZKkdlRV38QB/UuTjqEMEEK4Hbg8xljX+vUuxRgv6cBYkjLE7f96gx/87TUAPn3MSL71/oMTTiQpF+xxGRVj3AicE0LIA/oA62OMuz1dT5IkZabq+ia6FbXlMynlsKVAaoevJQmAXz/TUkT1KS3iL5cd7ZxBSWnT5rvQGGMKWNcOWSRJUgepqm+iW7FllCDG+P1dfS2pc/vJQ3P5xT8XMaBHCQ996TjKuhYmHUlSDvEuVJKkTqahKUVVfRNlXfzBQpL0Vg1NKb58zyz+/upqBpWV8H9fPNYiSlLa7baMCiEMizEu2/b1O71u22skSVLmW7WllhhhSHmXpKNIkjJIY3OKM296htkrKzlkYA/+cOmRfnAhqV2828qoJSGEnjHGSmAJEIGdj92JQH47ZJMkSe1gxeZaAIaUO/tDbxVCKALOA4az0z1fjPEHiYSS1CFijFx8x4vMXlnJ6eMHcf35E5KOJCmH7baMijHm7eprSZKUvZZvrgFgaC9XRult7gaOBR4B6ne47qE1Ug6rqG3k//1mOs8t3siUEeUWUZLanTOjJEnqZDZVNwDQp7Q44STKQKcAx8YYZyYdRFLHWLaxhhOveYLmVOTsSUP4ydnjko4kqROwjJIkqZOpb2wGoLjARc96m2VASdIhJHWMOasq+MD1/wLgmo+O56xJQxJOJKmz8C5UkqROpq4pRUlhHiHsPAZS4t+Am0MIhycdRFL7amxOcf6t0wD49cVTLKIkdag9LqNCCB8IISwOITTv8CsVQmhuz4CSJCm96hqbKSn07BHt0i+BkcBzIYRNrfd+i0MIi5MOJil9GppSnPg/T1BZ18QPzjiUEw7sl3QkSZ1MW7bp3QjcD/yCtw60lCRJWaSqronSYnfqa5cuSjqApPb3y38tZsXmWi49bj8uPGpE0nEkdUJtuRMtB66JMS5rrzCSJKn9baltpEdJYdIxlCFCCIfs8HD9Tk9viDGu68g8ktrXA7NWcvU/5lHWpZBvnnpQ0nEkdVJtKaPuBS4FrmynLJIkqQOs2lLLoJ5dko6hzDEbiEBo/X2bAMQQwsvAuTHGBUmEk5QeW+sa+dZ9s/nfl1fRvbiAv1w+lbw8ZwdKSkZbyqgXge+FECYBDwJbtj0RY7wr3cEkSVL72FLTyJjBZUnHUOYYuZvnegHfo2VMwykdkkZSWtU0NHH1P+bx62eXADBuSBm/+uQU+nYvTjaYpE6tLWXUecBcWo77/XDrtW2foFlGSZKUBdZW1rGmso5hvbomHUUZIsa4dDdPLw0hfBGY2VF5JKXPH19aztf+9Mr2x9efP4HTxw9KMJEktdhtGRVCuHeHhxt4c+l2oGWmwMMxxvvbKZskSUqzpRtrADhsaM+EkyiL9AFqkw4hac81NKX41n2v8qfpKwD4/Imj+NJ7R1OQv8eHqUtSu3q3lVHVu3luEPD7EMJ/xBh/ksZMkiSpnayprANgQFlJwkmUKUIIl+/m6XLgEuCBDoojaR/VNDRx8rVPsXJLS4f86FeOZ1S/0oRTSdJb7baMijFevLvnQwinA9cBllGSJGWBheuqAOjfwzJK231tN89tpOUQmx92UBZJ++ChOWv47G+mAzB+aE/u/eyRFBfkJ5xKkt6uLTOjduVFoG86gkiSpPa3aF0VQ3t1oaxLYdJRlCFijLsbYC4pC9Q1NnPRHS8wbfEmAC6aOoL/+NAhhOBpeZIy016XUaHlne1yYH764kiSpPZUWddIn1JPUBKEEK4ANsUYb9+D144ErgHOijHGd3u9pI7z8Jw1XNq6Gqp7SQH3XX602/IkZbx3G2C+njeHlu+sO9AAnJnuUJIkqX3UNDTTtcgtGwLgduC+EMJhwLdijFW7elEI4SPAj4HPWURJmeXZhRu2F1GfOXYk/37aweTluRpKUuZ7t5VRV+zmuY3AtBjjhjTmkSRJ7ai6vole3bomHUMZIMa4KYRwEvAl4OUQwsPAM8BaWj50PAA4C1gOnBJjXJpYWElvc8NjC7jmkZZNKndecjjHH+D0FEnZ490GmN/ZUUEkSVL7W1NZx8Th5UnHUIaIMTYD14QQfg6cBhwGHA1UAW/Qsi1vWYIRJe3kgVkruerBuayqaDkd9eYLJlpESco6+zrAXJIkZYmahia21DQypLxL0lGUYWKM9cD9rb8kZaBUKnLZ76bz0Jy1ABw7ug/XnnMYfbs7B1BS9rGMkiSpk9iwtQGAvg4wl6SsMntlBR/6+b/YNrXt0a8c75BySVnNMkqSpE5ifVXLlg4/RZek7HH/zJV86Z5ZAHxg7EB+dt5hFOTnJZxKkvaNZZQkSZ3Eusp6wDJK7yyE8C3gphjj5p2uFwCjY4yvJ5NM6nxijFz22xn8Y84aAK4+exznTB6acCpJSg8rdUmSOomlm2oAyyjt1seBA0II54QQDt7h+m+A6SGEryWUS+p0Lrrjxe1F1KNfOc4iSlJOsYySJKmTWLqxpYzq3c0ySu/ob8CjwJeBp0MIXw8hBOCM1l+XJBlO6iwuuuMFnpy/nm5F+cz/4WmM6tc96UiSlFZu05MkqZOoqG1gRO+u5OeFpKMoc10AvDfG+HwIYRCwEPg1UATMAEYkF03Kfa+tquSTd7zA+q319OtezN++cAxFBa4fkJR7LKMkSeok1lXW079HSdIxlPlSrb9HWlbR9wQqWr9uTiqUlOsemrOGz/5mOgCHj+jFLZ+YRHm3ooRTSVL7sIySJKmTWLKxhqP27510DGW2bwGPhBBeAw4GVgFfAroA5wCLEswm5ayVW2q3F1E3fXwip40dmHAiSWpfllGSJHUCjc0pNlbXM7J316SjKIPFGO8MITwNTAQWA2uBzwHHAj8F/ivBeFJOSqUiH7rhXwB854OHWERJ6hQsoyRJ6gQ2VTcQI/Rzm57eRYxxMS1F1Dbfav39uB1fF0IoA+6m5X6yCjg3xtjQISGlHNHUnOID1/+LTdUNHLVfbz51zMikI0lSh0hsGl4IoX8IYWbr178KITwbQrhyh+f3+pokSXqrtZV1APTr7kl6SpuPA9fGGE8G1gCnJpxHyho3PbGIS+96idFXPsi8tVspLS7grk8dnnQsSeowSa6M+h+gSwjhTCA/xjg1hHBjCGE0MHZvr8UYFyT3V5IkKTOt3FwLwJByt+nprUIIx737qyDG+NROj2/c4WFfYF06c0m5qDkVufSul3hsbsv/LgcN6M7+fUu54fwJ5HnSqaROJJEyKoRwElBNy6doJwD3tj71OHAMMGEfrr2tjAohXApcCjBs2LC0/l0kScoGK1rLqMHlXRJOogx05x68JgL77eqJEMJRQHmMcdounvMeTGpVXd/EaT97mmWbaijMDzz4xWMZ1a970rEkKREdXkaFEIqA7wIfBu4HugErW5+uBEbt47W3iTHeCtwKMHny5Ji+v40kSdlhxeYaupcUUNalMOkoyjAxxr0eUhNC6AXcAJz1Dv9s78Ek4PnFGzn31pa+trxrIS9deTL5roSS1IklsTLqm8AvYoxbQgjQMvBy28e0pbTMsdqXa5IkaScrNte6RU9p1foB473Av8cYlyadR8pUj7y2ls/c9RIAnzpmJFd+4GBafw6SpE4rifLmvcDnQghPAIcBH6Jlex3AeGAJMH0frkmSpJ20lFFu0VNafQqYBHw7hPBECOHcpANJmWZLTcP2IurmCybynQ8eYhElSSSwMirGuH1IZmshdTrwdAhhEHAacCQtcwn29pokSdpBjJGVW2qZOqp30lGUQ2KMNwE3JZ1DylQVtY0c/qPHALjilAM4dczAhBNJUuZIdFtbjPGEGGMlLUPMpwEnxhgr9uVax/8tJEnKbBW1jVTVN7lNT5I6yMxlmxn//YdpaEoxdnAZnz9pdNKRJCmjJHKa3s5ijJt581S8fb4mSZLetP0kvZ5u05Ok9lRd38QtTy3m+sdaDvg+//Bh/NeHxyScSpIyT0aUUZIkqf2s2FwD4MwoSWpHdY3NjPneQ8TWcyOvPWc8Z04ckmwoScpQllGSJOW4bSujhrpNT5LaRYyRY676JzHC+KE9ueOiKfTqVpR0LEnKWJZRkiTluBfe2ETvbkX06OK3fUlKt+ZU5LSfPcWGqnoGlZVw32VTycvzxDxJ2p1EB5hLkqT2VdPQxBPz1vORCYM9TlyS0qy+qZmTrnmC+Wur6F5cwGNfPcEiSpL2gB+RSpKUw1ZtqaWhOcXYIWVJR5GknLKhqp7JP3wUgB4lBUz/zskU5vtZvyTtCd8tJUnKYRurGgDoU1qccBJJyh3Tl27aXkSddFA/ZlhESVKbuDJKkqQctrG6pYzqXeogXUlKh989v5Rv3zcbaCmibr9oSsKJJCn7WEZJkpTDlm+qAWBgjy4JJ5Gk7Pe9v87h188uAeDOSw7n2FF9kg0kSVnKMkqSpBy2YF0V/boXU9a1MOkokpS1pi3eyCW/fpGahmYA7r70SI7cr3fCqSQpe1lGSZKUwxasq2J0/9KkY0hSVqqoaeTzf5jB0ws2ADB5eDm3XTiZ8m5ufZakfWEZJUlSjqptaObl5Vu4aOqIpKNIUlZJpSJ/e3U1X/jDTABKiwu4+YJJHD2qNyGEhNNJUvazjJIkKUc9tWA9AJNHlCecRJKyx30zV3DdowtYurFl5t45k4dw1VnjLKEkKY0soyRJylHPLGzZVnL0/g7YlaR3U9/UzBf+MJOH5qwFYMzgHlx37mGM6tc94WSSlHssoyRJylGrK+ooKcxztokkvYum5hSn3/AM89ZuBeDhLx/HAf0toSSpvVhGSZKUo15dUcH7Dh2QdAxJymibqhv46M3Psmh9NcUFebx45XvpUeIJpJLUniyjJEnKQZV1jayprOOQgT2SjiJJGeuBWSv54t2zAOjVrYhnv3kSJYX5CaeSpNxnGSVJUg5aW1EHwICykoSTSFJmuuKPL/On6SsAOHPCYL53xqEWUZLUQSyjJEnKQSu31AIwsKxLwkkkKbMs2VDNGb94horaRgAe/crxjOpXmnAqSepcLKMkScpBC9dVAbB/324JJ5GkzDFj2WbOvPFZAMYNKeOXn5xMv+6uIJWkjmYZJUlSDnp99Vb6dS+md2lx0lEkKSO88MYmzrnlOQCu/MDBXDR1BAX5eQmnkqTOyTJKkqQcNHdNJQcO8FhySQJ4acmbRdSZEwfz6WP3SziRJHVufhQgSVKOSaUiC9dVcZBllCTxz7nrOPvmliLqmo+O59pzDks4kSTJlVGSJOWYtVvrqG9KMaKP86IkdV6bqhv46SPz+c20pQD8+MyxnDVpSMKpJElgGSVJUs5ZurEGgGG9uiacRJKSMW3xRs6/bRoxtjz+9cVTOOHAfsmGkiRtZxklSVKOWbm5FoAh5ZZRkjqfW55cxH8/OBeAI0b24sdnjWOkK0UlKaNYRkmSlGMq6xoBKO9amHASSeo4VfVNXP2Pudz1XMu2vJs+PpFTDh1Afl5IOJkkaWeWUZIk5ZiquiYAuhX7bV5S5/H538/giXnrAfjL5VOZOKw84USSpHfiXaokSTlmdWUdPbsWUpjvobmSOoc7nnljexE1/4enUVTg+58kZTLLKEmScsy8NVs5oH/3pGNIUrurb2rmfx6ax53PtmzNe+BzR1tESVIW8J1akqQcEmNk7upKDrSMktQJXPPwfG57+g16dCnkjoumMH5oz6QjSZL2gCujJEnKIcs31VLd0Mz+687xSwAAIABJREFUfT05SlLuem1VJX+avoK/zFwBwCNfPo7ybkUJp5Ik7SnLKEmScsjG6noAhve2jJKUe2KM3PnsEv48YyWzV1XQvbiAq88aZxElSVnGMkqSpBzy+uqtAAwu75JwEklKr4qaRu58bgnXPjIfgI9MGMxPzz0s2VCSpL1iGSVJUg7557x19CktZnS/0qSjSFLabKlp4McPzuXuF5dTkBd45CvHM7KPK0AlKVtZRkmSlEOWbKhm0vCehBCSjiJJabGlpoHvPjCHv768isE9u/DQl4+jtNgfYyQpm/kuLklSjkilIss21XDCgX2TjiJJaZFKRU665kk2VTcwfmhPfvXJyRZRkpQDfCeXJClHrK+qp74pxbBeXZOOIkn77BO/ep7nFm2kKRU5b8pQLj9hFH1Ki5OOJUlKA8soSZJyxIrNNQAMKbeMkpS9bnpiEY++vpaZyzYzaXg5U/fvwyenjqCXJ+ZJUs6wjJIkKUesrawHoH+PkoSTSFLbramo4/fPL+WuaUspLsjjmNF9ueKUAxg3pGfS0SRJaWYZJUlSjli2qWVl1MAyyyhJ2aWyrpHrH1/A759fRlF+Hl9/30F87IhhSceSJLUTyyhJknLE0o019OpWRLlbWSRlme/cP5sHZq1iQI8Spn3rPUnHkSS1M8soSZJyxKottQzu2SXpGJK0x5ZvquG8W6extrKO8UN78vPzJyQdSZLUASyjJEnKEbNXVjBpeHnSMSRpj8xeWcHPHlvAyi21nHHYID52+DCGehqoJHUKllGSJOWAhqYUG6sbKOtSmHQUSXpXqytque7R+Tw2dx0j+3TjRx8ZS7difzSRpM7Cd3xJknLA6opaAA4f2SvhJJK0e7NXVvDBG/4FwNT9e/P7zxyZcCJJUkezjJIkKQe8vroSgFH9ShNOIknv7H8emsdTC9YDcOUHDuaUQwYknEiSlATLKEmScsA/Zq+hqCCPgwf2SDqKJL1NjJF5a7fy838upH+PYk44sC8XHjWCooK8pKNJkhJgGSVJUpZrbE7x8GtrOWviYEoK85OOI0lv89eXV/HFu2cB8NVTDuScyUMTTiRJSpJllCRJWe6VFVuoaWjmuNF9k44iSW+xakst1z+2gNmrKgC4/aLJHD2qT8KpJElJc12sJElZ7rHX1wFw5H69E04iSW9qTkUeeW0td7+4nM3VjZxySH9OOqg/xQWu4JSkzs6VUZIkZblnFm7g0EE9KO9WlHQUSQLgukfnc92jCwDIzws89fUTyc8LCaeSJGUKyyhJkrLcqoo63nNQv6RjSBJrK+uYvnQzj89dx4AeJXzsiGHs37fUIkqS9BaWUZIkZbFUKrKpuoE+pcVJR5EkvvfXOTw4ew0A7x87gC+8Z3TCiSRJmcgySpKkLLappoHmVKR3qVv0JCVn2cYa7nj2DaYv3cyk4eX86CNjGd67a9KxJEkZygHmkiRlsddXVwIwul/3hJNI6szum7mSO55ZQkNzivcc3I8DB3SnpNBB5ZKkXXNllCRJWezl5VsAGDukLOEkkjqj2//1Bg+/toalG2voXlLArO+eknQkSVIWsIySJCmLzVtbxbBeXSnrUph0FEmd0B9eWMam6gb271fKlBHlSceRJGUJyyhJkrLYxqp6+nZ3eLmkjlNR28hFd7xAZW0jSzfWcPakIfz4rHFJx5IkZRFnRkmSlMU2VTdQ3tXh5ZI6zsJ1W5m5bAt9Sos5dcwAPjp5SNKRJElZxpVRkiRlsbWVdYxzXpSkDrB0YzWX/24Gm6obAPj39x/MYUN7JpxKkpSNXBklSVKWenbRBjbXNDJ2sGWUpPb38ooK5qyq5KAB3fnYEcM4eKCneEqS9o4royRJylJPzl8PwBkTBiecRFKu+8MLy7jtqcUAXHXWOPr1KEk4kSQpm7kySpKkLPXoa2s5cr9e9CjxJD1J7etP01ewsbqBMycMpk+phyZIkvaNZZQkSVloc3UDi9ZXc8TI3klHkZTD6hqbue7R+byxoZqp+/fm2nMPIy8vJB1LkpTl3KYnSVIWmrl8MwBH7W8ZJan9zFi2meseXUBJYR6ThpcnHUeSlCMsoyRJykIPvroGwJP0JLWbheuqmLV8CwB/uexoDhnUI+FEkqRcYRklSVIWWlVRS1mXQroW+a1cUvqt2lLLe699cvvjPt2LEkwjSco13sFKkpSFFq2r5phRfZKOISlHrdtaD8AVpxzACQf2o193T8+TJKWPZZQkSVmmur6JNZV1HDywe9JRJOWQReur+PZ9r9LQlGJrXRMAR+zXmzGD3Q4sSUovT9OTJCnLvLGhGoCRfUoTTiIpl7zwxiamLd5EQX4eA8pKOG3MAA4e6JwoSVL6uTJKkqQss22g8Oj+llGS9t2Gqno2VjWwpLXo/tUnJ9O9pDDhVJKkXGYZJUlSlrnruSX0617M/n0toyTtm4amFMdf/U+qG5oBKC7Io5sHI0iS2pnfaSRJyiLTl25i/toqrvzAweTnhaTjSMpyW+saqW5o5tzJQzn+wL4MKe9Cnu8tkqR2ZhklSVIWeWLeegDOmTI04SSSstnWukYenL2G9a2n5k0eUc77xw5MOJUkqbOwjJIkKYs8MW89E4f1pIfzXCTtg/tnruQ7D8zZ/nhor64JppEkdTaWUZIkZYmKmkbmrKrg8yeNTjqKpCxXUdsIwL++cSLdigoo71aUcCJJUmdiGSVJUpZ4bvFGUhGOHd0n6SiSstQjr61l2aYapi3eRGF+YEi5K6IkSR3PMkqSpCzx+Ny1FOXnMXZwWdJRJGWh+qZmPvubl0jFlscH9u+ebCBJUqdlGSVJUpZ4eXkFU0aWU1KYn3QUSVmopr6ZVIRvnnYQ5x8+jK5FvpdIkpJhGSVJUhaoa2xm0foq3nPwfklHkZRllm6sZuXmWjZWNwDQq2sRZV08BEGSlBzLKEmSssD8tVtpSkW36Elqsw//4hk21zRuf9y71GHlkqRkWUZJkpQFHpqzBoAxllGS2iCVimyuaeTsSUP46KQhFBfmM873EUlSwiyjJEnKAq+sqKC8ayFDyrskHUVSFqlragZgVL9Sjtivd8JpJElqYRklSVKGq6pv4ukFG7j46BGEEJKOIynDff73M1i4rgqA5taj87p48IEkKYNYRkmSlOGmL90MwLghbq2RtHuNzSn+9spqRvcrZb++3QA4cEB3Tjiwb8LJJEl6k2WUJEkZ7pqH51FckMdxo/1hUtLu1TW2bMs7Z/JQPnOcp29KkjKTZZQkSRls9soKXllRwRWnHEDv0uKk40jKQA1NKSrrWk7L21TdAEBJYV6SkSRJ2i3LKEmSMtj/vboagLMnDU04iaRM9dFbnuPl5Vvecq20xNt8SVLm8ruUJEkZ7O+vrmZUv1IGlJUkHUVShlq+qYbDR/biQ+MGAlBUkMf7Dh2QcCpJkt6ZZZQkSRmqsq6R5ZtqOHfKsKSjSO8ohNAf+FOM8diks3RWdY3NjB9SxieOGpF0FEmS9kiHbyYPIZSFEB4MITwSQrgvhFAUQvhVCOHZEMKVO7xur69JkpQLnpq/nlSEMw4blHQUaZdCCOXAnUC3pLN0ZvVNKYoL8pOOIUnSHktiZdTHgWtjjI+EEG4CzgPyY4xTQwg3hhBGA2P39lqMcUECfydJktLur7NWMbCshCkjeiUdRXonzcC5wANJB+ksbntqMT968HVifOv1LkWWUZKk7NHhZVSM8cYdHvYFLgCua338OHAMMAG4dy+vva2MCiFcClwKMGyYWx0kSdnhucUbOemgfuTnhaSjSLsUY6wECGHX/416D5Z+r6+upHtxARcdPXL7tYK8wFkThySYSpKktklsZlQI4SigHFgCrGy9XAmMomWp995ee5sY463ArQCTJ0+Ou3qNJEmZZMXmGrbWNTGsV9eko0h7zXuw9KtvTtG3ezFfOfmApKNIkrTXOnxmFEAIoRdwA3AJUAV0aX2qtDXTvlyTJCnr3fbUYgBOHeOJWJLeVN/ofChJUvbr8JVRIYQiWrbW/XuMcWkIYTot2+umAeOBecCKfbgmSVJWa2xOcd/MlezftxsHD+iRdBxJCZqxbDPPLdq4/fHi9VX06FKYYCJJkvZdEtv0PgVMAr4dQvg2cAfwiRDCIOA04EggAk/v5TVJkrLaU/PXU1nXxE8+Op4850UpC8QYT0g6Q676r7+/zvSlm99y7aOTnA8lScpuSQwwvwm4acdrIYS/AicDV8cYK1qvnbC31yRJymY3PL6Q3t2KOPHAfklHkZSwmoZmTjqoHzddMHH7taJ8J1NIkrJbYgPMdxRj3Mybp+Lt8zVJkrJVdX0TL6/YwnlThlFU4A+cUmfX0NRMSWGec6IkSTnFu1xJkjLIDY8vJEb48GGDko4iKQM0NkdXQkmSck5GrIySJEkQY+T/Xl3NpOHlHLFf76TjSOpgayvreHjOGuIO17bUNLhKUpKUcyyjJEnKEM8t3siyTTV8/qRRSUeRlIBfPr2Y255+423Xh5Z3TSCNJEntxzJKkqQM8bdXVlNSmMeHxrlFT+qMahqa6dWtiEe+fNz2ayEEyrsWJphKkqT0s4ySJCkDpFKRh+es4cQD+9GlyEHFUmfU2JyiuCCP3qXFSUeRJKlduQFdkqQM8ODsNWyoauCUQ/snHUVSQhqbI4UOK5ckdQJ+t5MkKQP8ZtoSBvfswunjBycdRVJCGppSFOaHpGNIktTu3KYnSVLC1m+tZ9riTVx+wv7k5/mDqNQZNDan+O4Ds9lY1bD92qzlW+jVrSjBVJIkdQzLKEmSEvbEvHUAvO/QAQknkdRRlm+q4Q8vLGdQWQk9urQMKO/VrYhTx/g+IEnKfZZRkiQl7PXVWykpzGPM4LKko0jqII3NEYBvf+AQPjBuYMJpJEnqWM6MkiQpYTOXb2bMoDK36EmdSGNzCoACZ0RJkjohyyhJkhI0felmZi3fwuEjeyUdRVIH2lZGObBcktQZWUZJkpSQzdUNfPY3LzG8V1cuOWZk0nEkdaCmVMs2vcJ8b8clSZ2PM6MkSUrI7c+8wYaqBu685HD6lBYnHUdSO6ppaKKhKbX98ZaaRgAK8iyjJEmdj2WUJEkJ2FhVz53PLuG4A/py6CAHl0u5bN6arXzg+qe3r4baUZei/AQSSZKULMsoSZIS8JcZK6msa+IrJx+QdBRJ7Wx1RS1NqcinjhnJkPIu26+XFhcw1lM0JUmdkGWUJEkdrKEpxS+eWMj4IWUcNrRn0nEktbOm5pYVUWccNohxQ/x/XpIkN6lLktTBnlu8kS01jVx2wv5JR5HUAbZtz3M+lCRJLfyOKElSB2pqTvG9v86hf49ijj+gX9JxJHWA5m1lVH5IOIkkSZnBMkqSpA705xkreGNDNd887SAHF0udRFOq5RS9gjzLKEmSwDJKkqQOU9/UzDUPz2e/vt04Y/zgpONI6iDbZka5TU+SpBYOMJckqYPcN2Ml67bWc80548lzhYSUU15fXUllbeMun1uwrgpwm54kSdtYRkmS1AFqGpq44fGFjB1cxjGj+iQdR1IavbGhmtN+9vRuX5MXoFuRt96SJIFllCRJHeJrf3qFlVtq+fFZYwnB1RFSLtm2Iupr7zuQCUN77vI1vUuLKeta2JGxJEnKWJZRkiS1swVrt/L3V1ZzydEjOXZ036TjSEqzptbT8sYMLmOqKx8lSXpXTlGUJKmd/WXmSgA+dsTQhJNIag/NqW0Dyl31KEnSnrCMkiSpHf3vy6u49anFHH9AX0b16550HEntoCmVAiDPLbiSJO0Rt+lJktRO/vvB17nlycVMGNaTa88Zn3QcSe2ktYvytDxJkvaQZZQkSe3gH7NXc8uTizlzwmCuOnschfkuRpZy1baVUflu05MkaY94ZyxJUppV1jXy1XtfZmivLvz4LIsoKdc5M0qSpLZxZZQkSWn24KurqW5o5tYzx1FUYBEl5bptp+k5M0qSpD1jGSVJUpo9OHsN/XsUM3X/3klHkZQG1zw8j8Xrq9/x+dUVtYAzoyRJ2lOWUZIkpdFrqyp5Yt56LjxqOMFVElLWa2xOccPjC+nVrYhe3Yre8XWTh5czpLxrByaTJCl7WUZJkpQmMUa++ZdXKOtSyBffMzrpOJLSYNs8qE8dM5LPnTgq4TSSJOUGB1lIkpQm0xZv4pUVFXz+xFH0Li1OOo6kNEjFljLKk/IkSUofyyhJktLkV/9aTJ/SIi44cnjSUSSlybaVUfluu5UkKW0soyRJSoOlG6t5fO46zpk8lC5F+UnHkZQmrV0UdlGSJKWPZZQkSfsoxshX732Z4oJ8LjxqRNJxJKVRKuU2PUmS0s0ySpKkffTGhmpeWrqZTx87kgFlJUnHkZRGzc6MkiQp7SyjJEnaB1vrGvn0nS9RXJDH2ZOGJB1HUpptWxmV5z49SZLSpiDpAJIkZatUKvLJ219g8YZq7rhoCsN7d0s6kqQ0c2WUJEnp58ooSZL20lUPzWXGsi18/dQDOfGgfknHkdQOPE1PkqT0s4ySJGkvTF+6mVueXMz7Du3PZcfvn3QcSe0klWr5Pc+VUZIkpY3b9CRJaqOK2ka+fM8sBvQo4ZpzDiO4YkLKCq+uqGDllto2/Zn1W+sAsIuSJCl9LKMkSWqDusZmLrz9BVZtqeWezx5FabHfSqVs0Nic4qybnqWhObVXf768a1GaE0mS1Hl5By1JUhtcef9sXl6+havPGsek4eVJx5G0h5pTkYbmFBdNHcE5k4e26c8WF+axXx8PKJAkKV0soyRJ2kPXPjKfP01fwceOGMY5U9r2w6ykZKVaT8UbUFbCIYN6JJxGkqTOzQHmkiTtgX/OW8cNjy/g2NF9+P7phyYdR1IbtR6K5+wnSZIygGWUJEnvYv3Wei7/7Qx6lBRy/XkTKMz326eUbbatjMrzwAFJkhLn3bQkSe/iO/fPpq6pmRs/PpHybg4xlrJRbJ1b7umXkiQlzzJKkqTduPel5fxjzho+d8Iojh7VJ+k4kvbSmyujEg4iSZIcYC5J0q7EGLnh8YVc+8h8powo5zPH7pd0JEn7wG16kiRlDssoSZJ2UtfYzI8fnMuvn13CaWMGcP35zomSsl3r/HJXRkmSlAEsoyRJ2sG8NVu57LfTWbyhmrMmDuEnZ48jz59epay3bWWUM6MkSUqeZZQkSa3uem4JVz04l/y8wB0XT+HEA/slHUlSmrR2UW7TkyQpA1hGSZI6vblrKvmfh+bx6OvrmLp/b64+exxDyrsmHUtSGm1bGeWOW0mSkmcZJUnqtBqaUvzkobnc8cwSigry+Oxx+3HF+w50PpSUg1KtK6PcpidJUvIsoyRJndLSjdV89d6XeWnpZs6dPJSvnXogfUqLk44lqZ2kUp6mJ0lSprCMkiR1Oks3VnPmjc/S0Jzi6rPGcc6UoUlHktTO3pwZlWwOSZJkGSVJ6kSamlPc+dxSrnpwLoX5gT9ceiTjhvRMOpakDrBtZpQroyRJSp5llCSpU5i5bDOf+90MVlXUccTIXlx11jhG9OmWdCxJHWRbGWUXJUlS8iyjJEk57y8zVvDVP75M18J8br5gIqccMoA89+pIOeW5RRv58j2zaEqldvl8kzOjJEnKGJZRkqSctam6gW/95VX+MWcN44eU8fOPTWRor65Jx5LUDl5bXcmayjo+OmkIRQW7PhGzpDCfo0f16eBkkiRpZ5ZRkqSc9PCcNXz3gTlsqKrni+8ZzWUn7E9JYX7SsSS1k9i6De/KDx5CWZfChNNIkqTdsYySJOWUJRuq+eHfX+fR19cyuGcX7rrkcKa6EkLqNNyFJ0lS5rOMkiTlhKr6Jn759GJueHwhAfjCe0bzbyeNojB/19t1JOWW1oVR2EVJkpT5LKMkSVktxsi/Fm7gij++zNrKet53aH9+cMYY+vcoSTqapA4UcUC5JEnZwjJKkpSVGptT/P2V1dz61GJeW11J3+7F3HXJ4Rx3QN+ko0lKQGrbyii7KEmSMp5llCQp6zyzcAP/8dc5LFxXxah+pVx91jjOmDCI4gIHlEud1Zvb9GyjJEnKdJZRkqSskEpF/v7qan7//DKeW7yRYb26cvMFkzjlkP7k5fnDp9TZbdum58ooSZIyn2WUJCnjvbGhmq/eO4sZy7YwuGcXvnnaQXziyOF0K/bbmKQW21ZGSZKkzOddvCQpYy1aX8XPHl3A319dTUFe4D/POJTzDx9GgSfkSXoHDjCXJCnzWUZJkjLOKyu2cOtTi3l4zlqKCvK4eOoILj5mJIN7dkk6mqQMFaPb9CRJyhaWUZKkjBBjZNriTdz85CKenL+eHiUFnDlxMF895UD6di9OOp6kDLf9NL1kY0iSpD1gGSVJSlSMkUdeW8uP/zGXxeur6VNaxNfedyAXHDmcsi6FSceTlCW2n6bn0ijp/7d3r0GSleUBx/9PT89tZ3bZZWd3WUDABWIQBSJrRFxgvaAxQY2aMqYkJqXRaBkrpvIhpjApk2hMWVRSqSSQkDIpy1sVanlBMURLCKhFSlBJUgYicl9uu+xl2Nm5dj/5cM7sTE/Pwuw60709/f9VdfV73nPpt58+PfP006fPkaTjnsUoSVJb7H56kq/8aBdfuPMR7n78aU5ZP8jH33wer7/gZAZ6e9o9PEkd5vDV9No8DkmS9OwsRkmSWmZypsbNdz/JF+58hJvv2U2tnlzwnPX85RtfyJsvPIX+qkUoScdm7sio9o5DkiQ9O4tRkqQVNTlT4/v37+Pzdz7Mt378BGNTNTav7eddl2zj1y48hbM2r233ECWtAmUtyp/pSZLUASxGSZJWxEytzlfvepSrb7qHRw9MMNxf5fUXnMJrzt3CjrNGqPZU2j1ESatJpkdFSZLUISxGSZKWTb2e3H7fU3zph7v45v8+wf5D02wbGeIfr3wRO5+32XNBSVox9fR8UZIkdQqLUZKkY1arJz96eB8/fGg//73rAN+9dw97Dk6xtr/KK8/ZzBXnncwrz9nsz2Ykrbgk/VsjSVKHsBglSToqu/aP89179/Af9+zmtp/sZnRiBoCtJwzw0jNHeMXPb+JV52xh7UBvm0cqqZukR0ZJktQxLEZJko5oplbnob2HuOuR/fzgwf18++4n2bV/HIANa3p57Qu28rKzR7j4zI2MDPe3ebSSulnilfQkSeoUFqMkqctlJnvHprhvzxj37T7IfbvH+OnuMe7fc5CH9h5iulZco2pNXw8XnznCO3c8lx1nj3DWpmEqFT/5STo+ZHolPUmSOoXFKEnqEoemZnh473hRcNozxk/LwtP9e8Y4MD59eLm+ngqnb1zDWZuHefW5J7FtZIhzTz6B5520lh6LT5KOU0n6Mz1JkjqExShJ6nAT0zX2HZriwPg0u5+e5InRyfJ+gl37x3nswDiP7p9g79hUw3pb1vWzbWSYK87byrZNw2zbNMSZI8OcsmHQopOkjlMcGdXuUUiSpKWwGCVJx5laPdl3aIq9Y1M8dbC43zs2yVNjZd/YFPvK9iP7xjk4ObPodtb2Vzl5/SBb1w9w3qnrOWX9IKduGOTMTcOcMTLEcL//AiStHplJeGyUJEkdwU8ikrQCMpPJmTqj49OMTkxzYHyG0YnpcnrmcP/oeNE+MD7NE6MT7D44yYHxaTIX3+66gSobh/s5caiPUzes4aJtG9m0tp8Na/o4YbCXTWv72by2n83r+lnT5594Sd3DI6MkSeocflKRJIri0aGpGmOTM4xP15iYrjMxXePQVI3x6RnGJmscmpopp2scmqxxcHKmuE3MHG7vOzTF6Pg0Y5M1pmr1Z3zMvmqFdQO9rBuscsJgL88dGeIl207kxKF+Ng71sWGoj41DfZxY3m8Y6qO3p9KiiEhSZ0nwuChJkjqExShJbVGvJ7VMpmt1pmbqTNeKdnEr2jO1ZKpWZ6a2+PzJmRpTM3WmZufNFPMna3Umy2LSxHSNyZk6kzPF40zOFIWm2fuJ6aK4dHBy5ohHIy2mEjDUX2Vtf5Wh/irDA1XWDlQ57cQ1rBusMtzfywmDRaGpKDj1sm6gWt73snagykBvz8oFWJK6TCZUPDRKkqSOsCqKURHxCeAc4MbM/Eg7xvDE6ASj5dWoFn6enf8BNxfMXfjh92iWPZb1mseWzzCvYeoZx5LPNG+Jj7Fw3DzjuI+8Xubc8pnl3CyWm11vdpnZ+Tm7UMO8uXXmb4+F82a3eYTHm7+tejmRFMWYXDiWeevVF4y5cfliW5lJPYt2PZN6fa6dWZx7aHb+7LK1erlsJrX6wuWybNM8XRaP5u45PH9h/2xfrV6uX09mFix3NIWfo9XXU2Ggt8JAbw8DvT30Vyv091bor/bQ11NhZLh6uH92mbUDVYbLwtJg2TfQW2Gwr4ehvipr+noY7OthTdnur1a8hLikrnc85GD37xmjVq+z/9CUh0ZJktQhOr4YFRFvAnoy8+KIuCYizs7Mn7R6HFffdA+fv/ORVj+sulxE8S1wT8RcuzLXrszeV+a1I6hU5tZbOK9ndrpSzi+33VetlPPi8H0lKNrlsvP7qz3FdNFfoacyt83qvHV6qxV6eyr0VSv0VoLenkrRV7arPWVfT4XeBe3+3qK41Fet0Ff2Fc/fTyOStNKOlxzsN667ncdHJwDYtLa/1Q8vSZKOQccXo4CdwPVl+9vADqAhEYqIdwPvBjjttNNWZBBvu+h0LnveprnHXPDV3PzPxgs/Jjd/bo4jzps/ufADd+O8Iz9G05VmnnFs8QzzFm5maeNufvhjfL7PGtM43I5y/Zi3XhBz7TjydCxhezFv3uFlFsyvRLGJ2XbD/IiG7VYWjKey2HwLLpKk9trJcZCD/cWvvoCJ6RoAzx0ZWpHHkCRJy2s1FKOGgF1lexQ4a+ECmXkdcB3A9u3bV+THQRc8Zz0XPGf9SmxakiTpeHRc5GCXP3/LSmxWkiStoNVwWaaDwGDZHmZ1PCdJkqTjnTmYJEk6JqshabiT4rBwgPOBB9rH072UAAAJ2UlEQVQ3FEmSpK5hDiZJko7JaviZ3peB2yLiZOC1wEVtHo8kSVI3MAeTJEnHpOOPjMrMUYoTaN4OvDwzD7R3RJIkSaufOZgkSTpWq+HIKDJzH3NXc5EkSVILmINJkqRj0fFHRkmSJEmSJKlzWIySJEmSJElSy1iMkiRJkiRJUstYjJIkSZIkSVLLWIySJEmSJElSy1iMkiRJkiRJUstYjJIkSZIkSVLLWIySJEmSJElSy1iMkiRJkiRJUstYjJIkSZIkSVLLWIySJEmSJElSy1iMkiRJkiRJUstYjJIkSZIkSVLLWIySJEmSJElSy1iMkiRJkiRJUstYjJIkSZIkSVLLWIySJEmSJElSy0RmtnsMLRURu4EHV2jzI8CeFdp2JzIezYxJI+PRzJg0Mh6NjEezxWJyemZuasdgdGTmYC1lPJoZk0bGo5HxaGZMGhmPRkeKx5JzsK4rRq2kiLgjM7e3exzHC+PRzJg0Mh7NjEkj49HIeDQzJgL3g4WMRzNj0sh4NDIezYxJI+PRaDni4c/0JEmSJEmS1DIWoyRJkiRJktQyFqOW13XtHsBxxng0MyaNjEczY9LIeDQyHs2MicD9YCHj0cyYNDIejYxHM2PSyHg0+pnj4TmjJEmSJEmS1DIeGSVJkiRJkqSWsRglSZIkSZKklrEYJWnFRMSJEXF5RIy0eyySJEndwPxLUiewGLVMIuITEfG9iPhQu8fSKhGxJSJuK9u9EfG1MgbvOJq+1SAiToiIb0TENyPiSxHRt9g+sdS+1SAitgJfB34RuDkiNnV7TODw++aHZbtr4xER1Yh4KCJuKW8vjIg/i4jvR8Tfz1tuSX2rSURcExGvK9vdvI+8d97+8aOI+KdujoeOrBtfb3OwOeZgjcy/Fmf+NcccbHHmX3NalYNZjFoGEfEmoCczLwZOjoiz2z2mlRYRG4BPAkNl1/uBO8oYXBERa4+ibzV4G/DXmXk58DjwVhbsE4vtJ6t83zkX+IPM/ChwE/AKjAnA1cDgUp/7Ko7HecDnMnNnZu4E+oEdFMnzIxHxqojYvpS+9gx/ZUTEJcBJmXlDt+8jmXntvP3jNuD/6OJ4aHHd+HqbgzUxB2tk/rU486855mALmH81alUOZjFqeewEri/b36Z4k652NeDXgdFyeidzMfgesP0o+jpeZl6Tmd8sJzcBV9K8T+xcYt+qkJnfyszbI+JSin9ar6HLYxIRrwDGKJLlnXR3PC4C3hgR34mIz1Aky1/M4hKv3wIuAS5dYt+qEBG9wD8DD0TEG3AfASAiTgG2AKdjPNRsJ933epuDzWMO1sj8q5n5VxNzsHnMv45spXMwi1HLYwjYVbZHKV6wVS0zRzPzwLyuxWKw1L5VIyJeCmwAHsZ4EBFBkTBPA0EXxyQi+oA/BT5YdnX7e+b7wGWZuQPYDwzS3fEAeDvwY+DjFB8g3ocxgSIO1+J7RovrutfbHGxx5mBzzL/mmH8tyhyskfnXka1oDmYxankcpHgTAwzTnXFdLAZL7VsVIuJE4O+Ad2A8AMjC+yi+gb2I7o7JB4F/yMz95XS37yP/lZmPle27MR4AvwBcl5mPA58GbqXLYxIRFeDlmXkz7iNanK+37w1zsAXMvxqYfzUzB2tk/rWIVuRgqypgbXQnc4egnQ880L6htM1iMVhqX8crv3W5HvjjzHyQLo8HQET8UUS8vZxcD/wV3R2TVwHvi4hbgAuA19Hd8fhURJwfET3AGym+SenmeADcC2wr29uBMzAmlwD/Wba7/u+qFuXr3eXvDXOwRuZfTcy/mpmDNTL/WtyK52DV5Rppl/sycFtEnAy8luIbiG7zSeDG8uRvz6fYcXctsW81eCdwIXBVRFwF/Cvwmwv2iaR5P1msb7W4Drg+In4H+B+K98mt3RqTzLx0tl0mRK9nac99VcYD+HPgsxQ/H/gq8BGK5/m3wC+VtweBjy2hb7X4BPAvEfFWoJfid/df7eJ9BIpzndxathf7X9tt8VAzczBzMHOwRuZf85h/LcocrJH51+JWPAeL4vxj+lmVVza5HLi1PMSv65Q73Q7gptlzGSy1bzVabJ9Yat9qZUwaGY9GETEI/Arwg8y872j6Viv3kUbGQ4vx9TYHW8i/FY2MRyPj0cwcrJH7SLOViInFKEmSJEmSJLWM54ySJEmSJElSy1iMktQ1IuL5EbGp3eOQJEnqJuZgkhayGCWp40TEhyLihkX6/yYirjnCOhWKk7zeEBE9EdEbEbHIclFemUeSJEnzmINJWi4WoyR1onFg3+xERPSXzYPAdNnXO68f4A+BnwOuBF4MTAH1iMj5N6AOTEbE+hY8D0mSpE5iDiZpWVTbPQBJWqqI+DCwB6hRJDJERBU4GBHjQF/RFb9FUWz/LPCeiLgC+Cjwlsy8NyIeAraW26gDXwNuAa4u1+sHRlv3zCRJko5f5mCSlptHRknqJJcBkxSF9J7y0qGZmb2ZuQ74K+DazFyfmesy8z0RcQbwReBjwHci4k+AemY+npl7M3M/MANMZOb+su+xzKy34wlKkiQdh8zBJC0rj4yS1BEioge4EDgbGAZ6gV8GLouI+zJzapF1+oBHgTcBNwIfB94FfAp4oDUjlyRJ6lzmYJJWgkdGSeoULwaezMxTgQ8Dn8vMLcAbgL0RsR/4APDbETEVEYeAp4D3ZubXgRcBvw+8PTMfiIi3RMSl87Y/EBHrI2JTRGxp5ROTJEk6jpmDSVp2kZntHoMkPauIGAHOyMw7IuIDwMsozkdwC3Bg/iHdEfFp4DvAdWXXFuB2YDozzyqX+Tfgjsz8UETcAryE4vDzPuAnmXl+S56YJEnSccwcTNJK8MgoSR0hM/cAj0XE+4HfBXYC2ym+lastuBrL24BrKU6yeSXwDWDhJYQnytusj5bnOVhjEiRJklQwB5O0EixGSeoIEXEScA/wauAu4CuZeRXwaWANMJyZkZkBfAZ4L8U3bHcBCVzVloFLkiR1MHMwSSvBYpSkjpCZjwOnZebrKA73nu2fAd4D3LDIOtOZeRfF4d9Pt2qskiRJq4U5mKSVYDFKUsfIzL1HmPUZ4KURceYR1mu6yoskSZKWxhxM0nKzGCWpE/WUNwAy80lgKzAWES+juPTwzIJ1+oDeiFgXEZspLks8EBHrgSpzV3LZGBFbI2K4Jc9EkiSpc5iDSVoWFqMkdaJBYGB+R2buBzYC/05xOPiNC9bpL28fAO4HdgC/BzwAvGBe+wHgQYoTcEqSJGmOOZikZRGZ2e4xSNKyiYhI/7BJkiS1lDmYpKNhMUqSJEmSJEkt48/0JEmSJEmS1DIWoyRJkiRJktQyFqMkSZIkSZLUMhajJEmSJEmS1DIWoyRJkiRJktQy/w8G8c5A6M+UCwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1440x720 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 通过观察UniqueNum的走势，可知阶梯递增曲线小时在1和2之间，\n",
    "# 离散值与连续值的划分点在100，1000之间\n",
    "show_uniq(train_ax)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.通过交叉验证选择最合适的cut_point（未完成）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cat_and_cont(data, cut_point = 20):\n",
    "    '''\n",
    "    描述：\n",
    "        分离 离散型特征 和 连续型特征, 返回离散型特征的列名cat_cols 和 连续型特征的列名cont_cols\n",
    "        \n",
    "    '''\n",
    "    data = data.drop(columns=['id'])\n",
    "    uniq = [[col,data[col].unique().shape[0]] for col in data.columns]\n",
    "    # uniq_sort = sorted(uniq,key=lambda x: x[1],reverse=False)\n",
    "    cat_cols = [col for col,num in uniq if num>1 and num<=cut_point]\n",
    "    cont_cols = [col for col,num in uniq if num>1 and num>cut_point]\n",
    "    return cat_cols, cont_cols\n",
    "\n",
    "def label_encode_single_col(ser):\n",
    "    '''\n",
    "    描述：\n",
    "        对序列做label encoder\n",
    "    '''\n",
    "    le = LabelEncoder()\n",
    "    res = le.fit_transform(ser.vlaues)\n",
    "    return res\n",
    "\n",
    "def label_encode(data, cat_cols):\n",
    "    '''\n",
    "    描述：\n",
    "        对多列离散型特征特征做label encoder，使用了多进程加速\n",
    "    '''\n",
    "    res = Parallel(n_jobs=24, verbose=1)(delayed(label_encode_single_col)(data[cat_cols]) for col in cat_cols)\n",
    "    res_arr = np.vstack(res)\n",
    "    res_arr = res_arr.T\n",
    "    return res_arr\n",
    "\n",
    "def "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
